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 / Mixed Hierarchy Loading

 First NameLast NameTitleBirth DateCityCountry
12
 Page 1 of 2, items 1 to 5 of 9.
NancyDavolioSales Representative12/08/1948SeattleUSA
 
 CustomerOrderIDOrder dateOrder Total
 Page 1 of 25, items 1 to 5 of 123.
Ernst Handel1025807/17/1996$403.72
 
Product nameUnit PriceQuantityDiscountTotal
Chang$15.205020.00 %$152.00
Chef Anton's Gumbo Mix$17.006520.00 %$221.00
Mascarpone Fabioli$25.60620.00 %$30.72
Wartian Herkku1027008/01/1996$1,376.00
Magazzini Alimentari Riuniti1027508/07/1996$15.36
QUICK-Stop1028508/20/1996$435.84
Tradição Hipermercados1029208/28/1996$1,296.00
AndrewFullerVice President, Sales02/19/1952TacomaUSA
 
 CustomerOrderIDOrder dateOrder Total
 Page 1 of 20, items 1 to 5 of 96.
Blondesddsl père et fils1026507/25/1996$1,176.00
Morgenstern Gesundkost1027708/09/1996$1,200.80
Berglunds snabbköp1028008/14/1996$613.20
Vins et alcools Chevalier1029509/02/1996$121.60
Magazzini Alimentari Riuniti1030009/09/1996$608.00
JanetLeverlingSales Representative08/30/1963KirklandUSA
 
 CustomerOrderIDOrder dateOrder Total
 Page 1 of 26, items 1 to 5 of 127.
Victuailles en stock1025107/08/1996$352.74
Hanari Carnes1025307/10/1996$1,444.80
Wellington Importadora1025607/15/1996$517.80
Wartian Herkku1026607/26/1996$18.24
QUICK-Stop1027308/05/1996$145.12
MargaretPeacockSales Representative09/19/1937RedmondUSA
 
 CustomerOrderIDOrder dateOrder Total
 Page 1 of 32, items 1 to 5 of 156.
Hanari Carnes1025007/08/1996$337.40
Suprêmes délices1025207/09/1996$1,220.10
HILARION-Abastos1025707/16/1996$1,119.90
Centro comercial Moctezuma1025907/18/1996$100.80
Ottilies Käseladen1026007/19/1996$1,021.55
StevenBuchananSales Manager03/04/1955LondonUK
 
 CustomerOrderIDOrder dateOrder Total
 Page 1 of 9, items 1 to 5 of 42.
Vins et alcools Chevalier1024807/04/1996$440.00
Chop-suey Chinese1025407/11/1996$236.58
White Clover Markets1026907/31/1996$33.80
Blondesddsl père et fils1029709/04/1996$1,420.00
Wartian Herkku1032010/03/1996$516.00
Click PostBack to see the state of the grid is preserved.

  • To test the mixed hierarchy loading on this demo:
    • Expand the first level items - detail tables are loaded client-side
    • Expand the second level items - detail tables are loaded server-side
    • Collapse the items respectively

Source Code

C# VB.NET
Show code in new window Demo isolation steps
  • <%@ Page Language="vb" AutoEventWireup="false" Inherits="Telerik.GridExamplesVBNET.Hierarchy.HierarchyLoadModeMixed.DefaultVB"
        CodeFile="DefaultVB.aspx.vb" %>

    <%@ 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 -->
        <link href="../../Styles/default/hierarchy.css" rel="stylesheet" type="text/css" />
        <!-- end of custom head section -->
    </head>
    <body class="BODY">
        <form runat="server" id="mainForm" method="post">
            <telerik:Header runat="server" ID="Header1" NavigationLanguage="VB"></telerik:Header>
            <!-- content start -->
          <telerik:RadScriptManager ID="RadScriptManager1" runat="server" />
           
            <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                <AjaxSettings>
                    <telerik:AjaxSetting AjaxControlID="RadGrid1">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManager>
            <telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" AutoGenerateColumns="False"
                PageSize="5" AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" EnableLinqExpressions="false"
                GridLines="None" ShowStatusBar="true">
                <PagerStyle Mode="NumericPages"></PagerStyle>
                <ClientSettings AllowExpandCollapse="True">
                </ClientSettings>
                <MasterTableView DataSourceID="SqlDataSource1" DataKeyNames="EmployeeID" AllowMultiColumnSorting="True"
                    HierarchyLoadMode="Client" Width="100%">
                    <DetailTables>
                        <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="SqlDataSource2" Width="100%">
                            <ParentTableRelation>
                                <telerik:GridRelationFields DetailKeyField="EmployeeID" MasterKeyField="EmployeeID" />
                            </ParentTableRelation>
                            <DetailTables>
                                <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="SqlDataSource3" Width="100%">
                                    <ParentTableRelation>
                                        <telerik:GridRelationFields DetailKeyField="OrderID" MasterKeyField="OrderID" />
                                    </ParentTableRelation>
                                    <Columns>
                                        <telerik:GridBoundColumn SortExpression="ProductName" HeaderText="Product name" HeaderButtonType="TextButton"
                                            DataField="ProductName" UniqueName="ProductName">
                                        </telerik:GridBoundColumn>
                                        <telerik:GridNumericColumn SortExpression="UnitPrice" HeaderText="Unit Price" HeaderButtonType="TextButton"
                                            DataField="UnitPrice" DataFormatString="{0:C}" Aggregate="Avg" FooterAggregateFormatString="Average price: {0:C}">
                                        </telerik:GridNumericColumn>
                                        <telerik:GridNumericColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton"
                                            DataField="Quantity" Aggregate="Max" FooterAggregateFormatString="Max quantity: {0}">
                                        </telerik:GridNumericColumn>
                                        <telerik:GridNumericColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton"
                                            DataField="Discount" DataFormatString="{0:P}">
                                        </telerik:GridNumericColumn>
                                        <telerik:GridCalculatedColumn UniqueName="Total" DataFields="UnitPrice,Quantity,Discount"
                                            Expression="IIf({2} = 0,{0}*{1}, {0}*{1}*{2})" HeaderText="Total" DataType="System.Double"
                                            Aggregate="Sum" DataFormatString="{0:C}" FooterAggregateFormatString="Total cost: {0:C}" />
                                    </Columns>
                                </telerik:GridTableView>
                            </DetailTables>
                            <Columns>
                                <telerik:GridNumericColumn SortExpression="CompanyName" HeaderText="Customer" HeaderButtonType="TextButton"
                                    DataField="CompanyName" UniqueName="CompanyName" HtmlEncode="true">
                                </telerik:GridNumericColumn>
                                <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton"
                                    DataField="OrderID" UniqueName="OrderID" Aggregate="Count" FooterAggregateFormatString="Orders count: {0}">
                                </telerik:GridBoundColumn>
                                <telerik:GridDateTimeColumn SortExpression="OrderDate" HeaderText="Order date" HeaderButtonType="TextButton"
                                    DataField="OrderDate" UniqueName="OrderDate" DataFormatString="{0:MM/dd/yyyy}"
                                    Aggregate="Last" FooterAggregateFormatString="Last order dates: {0:d}">
                                </telerik:GridDateTimeColumn>
                                <telerik:GridBoundColumn UniqueName="OrderTotal" DataField="Total" HeaderText="Order Total" DataType="System.Double"
                                  DataFormatString="{0:C}">
                                </telerik:GridBoundColumn>
                            </Columns>
                        </telerik:GridTableView>
                    </DetailTables>
                    <Columns>
                        <telerik:GridBoundColumn SortExpression="FirstName" HeaderText="First Name" HeaderButtonType="TextButton"
                            DataField="FirstName" UniqueName="FirstName">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="LastName" HeaderText="Last Name" HeaderButtonType="TextButton"
                            DataField="LastName" UniqueName="LastName">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="Title" HeaderText="Title" HeaderButtonType="TextButton"
                            DataField="Title" UniqueName="Title">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="BirthDate" DataFormatString="{0:MM/dd/yyyy}"
                            HeaderText="Birth Date" HeaderButtonType="TextButton" DataField="BirthDate" UniqueName="BirthDate">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="City" HeaderText="City" HeaderButtonType="TextButton"
                            DataField="City" UniqueName="City">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn SortExpression="Country" HeaderText="Country" HeaderButtonType="TextButton"
                            DataField="Country" UniqueName="Country">
                        </telerik:GridBoundColumn>
                    </Columns>
                </MasterTableView>
            </telerik:RadGrid>
            <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM Employees"
                runat="server"></asp:SqlDataSource>
            <asp:SqlDataSource ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                ProviderName="System.Data.SqlClient" SelectCommand="SELECT Orders.OrderID, Orders.OrderDate, Orders.Freight, Customers.CompanyName, SUM(
                                        CASE WHEN [Order Details].Discount = 0 THEN 1
                                        ELSE [Order Details].Discount END
                                        * [Order Details].Quantity * [Order Details].UnitPrice) as Total
                                        FROM (Orders LEFT JOIN Customers on Orders.CustomerID = Customers.CustomerID)
                                        FULL JOIN [Order Details] on Orders.OrderID = [Order Details].OrderID
                                        Where EmployeeID = @EmployeeID
                                        GROUP BY Orders.OrderID,Orders.OrderDate, Orders.Freight, Customers.CompanyName"
                runat="server">
                <SelectParameters>
                    <asp:SessionParameter Name="EmployeeID" SessionField="EmployeeID" Type="string" />
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:SqlDataSource ID="SqlDataSource3" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                ProviderName="System.Data.SqlClient" SelectCommand="SELECT OrderID, [Order Details].UnitPrice, Quantity, Discount, Products.ProductName FROM ([Order Details] LEFT JOIN Products on [Order Details].ProductID = Products.ProductID) where OrderID = @OrderID"
                runat="server">
                <SelectParameters>
                    <asp:SessionParameter Name="OrderID" SessionField="OrderID" Type="Int32" />
                </SelectParameters>
            </asp:SqlDataSource>
            <asp:Button ID="Button1" CssClass="button" runat="server" Text="PostBack" Style="margin: 10px 22px 10px 0px">
            </asp:Button>
            Click PostBack to see the state of the grid is preserved.
            <br />
            <!-- 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