Telerik is a leading vendor of ASP.NET AJAX, ASP.NET MVC, Silverlight, WinForms and WPF controls and components, as well as .NET Reporting, .NET ORM , .NET CMS, Code Analysis, Mocking, Team Productivity and Automated Testing Tools. Building on its expertise in interface development and Microsoft technologies, Telerik helps customers build applications with unparalleled richness, responsiveness and interactivity. Telerik products help thousands of companies to be more productive and deliver reliable applications under budget and on time.
Version Q1 2012 released 04/11/2012
select

Grid / Creating Hierarchy Programmatically


 CustomerIDContact Name
Page size:
select
 91 items in 31 pages
ALFKIMaria Anders
ANATRAna Trujillo
 
 OrderIDDate Ordered
12
Page size:
select
 4 items in 2 pages
103089/18/1996 12:00:00 AM
106258/8/1997 12:00:00 AM
 
Unit PriceQuantity
23.253
14.005
34.0010
1075911/28/1997 12:00:00 AM
ANTONAntonio Moreno


  • This example demonstrates how to programmatically build hierarchical structures with Telerik RadGrid:
    • Creating hierarchical grid at runtime from scratch - no code in ascx
    • Using the RadGrid.MasterTableView property and the GridTableView class
    • Adding columns to grid views
    • Building 3-level hierarchy and binding the grid using the NeedDataSource and DetailTablesDataBind events
    In essence, there are two possible means to build Telerik RadGrid programmatically:
    • Create the control entirely in the code behind. This means that the grid instance should be created in the PageInit handler and added to a place holder's Controls collection at runtime, after the structure has been created. Note that in this case the grid columns should be added to the Controls collection of the MasterTableView after their attributes are set. No ViewState is required for grid structure to be persisted as it is recreated on each page initialization.
    • Create the control statically, but add its structure dynamically. This has to take place in the PageLoad event handler, following the rules for a structure object: columns or detail tables should be added to the corresponding collection first and then values for the properties of this instance should be set. Remember to check the condition (Not IsPostBack) to avoid adding the same structure objects to the grid twice. This is important because no ViewState is managed for the object before it has been added to the corresponding collection.
    Note that hierarchical structure is not supported with simple data-binding (calling DataBind()). See the Simple data binding demo from the Populating with data section for more info about the limitations of this binding mode.

Source Code

C# VB.NET
Show code in new window Demo isolation steps
  • <%@ Page Language="c#" Inherits="Telerik.GridExamplesCSharp.Programming.Hierarchy.DefaultCS" CodeFile="DefaultCS.aspx.cs" %>
    <%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" %>
    <%@ Register TagPrefix="telerik" TagName="Header" Src="~/Common/Header.ascx" %>
    <%@ Register TagPrefix="telerik" TagName="HeadTag" Src="~/Common/HeadTag.ascx" %>
    <%@ Register TagPrefix="telerik" TagName="Footer" Src="~/Common/Footer.ascx" %>
    <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <telerik:HeadTag runat="server" ID="Headtag2"></telerik:HeadTag>
        <!-- custom head section -->
        <!-- end of custom head section -->
    </head>
    <body class="BODY">
        <form runat="server" id="mainForm" method="post">
            <telerik:Header runat="server" ID="Header1" NavigationLanguage="CS"></telerik:Header>
            <!-- content start -->
            <telerik:RadScriptManager ID="RadScriptManager1" runat="server" />
            <br />
        <div style="width:730px;">
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
            <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            </telerik:RadAjaxManager>
            <br />
        </div>
    <asp:SqlDataSource ID="SqlDataSource1"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

                ProviderName="System.Data.SqlClient"
                SelectCommand="SELECT * FROM Customers" runat="server"></asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSource2"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

                ProviderName="System.Data.SqlClient"
                SelectCommand="SELECT * FROM Orders Where CustomerID = @CustomerID" runat="server">
                <SelectParameters>
                    <asp:Parameter Name="CustomerID" Type="string" />
                </SelectParameters>
            </asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSource3"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"

                ProviderName="System.Data.SqlClient"
                SelectCommand="SELECT * FROM [Order Details] where OrderID = @OrderID" runat="server">
                <SelectParameters>
                    <asp:Parameter Name="OrderID" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource>
            <!-- content end -->
            <telerik:Footer runat="server" ID="Footer1"></telerik:Footer>
        </form>
    </body>
    </html>

Get more than expected!

Take your time to truly experience the power of RadControls for ASP.NET AJAX with a free 60-day trial backed up by Telerik’s unlimited dedicated support.

Download your RadControls for ASP.NET AJAX trial and jumpstart your development with the available Getting Started resources.

If you have any questions, do not hesitate to contact us at sales@telerik.com.

Copyright 2002-2012 © Telerik. All right reserved
Telerik Inc, 201 Jones Rd, Waltham, MA 02451