I have added an Expand / Collapse All button to my RadGrid, which uses a 3-level hierarchy. Each level uses load mode ServerOnDemand. But the problem is that only the first level gets expanded.
I have adapted the CodeLibrary example http://www.telerik.com/community/code-library/aspnet-ajax/grid/expand-collapse-hierarchy-client-side-on-external-control-click.aspx
See below my adapted page - can anyone see why only the first level gets expanded? Even if I hard code item.Expanded = True it still doesn't work.
Steve
| <%@ Page EnableViewState="True" Language="VB" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <script runat="server"> |
| Protected Sub ExpandCollapseButton_Click(ByVal sender As Object, ByVal e As EventArgs) |
| '----------------------------------------------------------------------- |
| ' Expand or Collapse all items in the grid |
| '----------------------------------------------------------------------- |
| For Each item As GridDataItem In RadGrid1.Items |
| item.Expanded = Not item.Expanded |
| Next |
| End Sub |
| </script> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head id="Head1" runat="server"> |
| <title>Untitled Page</title> |
| </head> |
| <body style="margin: 0px;"> |
| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> |
| <div> |
| <asp:Button ID="ExpandCollapseButton" runat="server" |
| Text="Expand/Collapse All" |
| OnClick="ExpandCollapseButton_Click" /> |
| <telerik:RadGrid ID="RadGrid1" DataSourceID="AccessDataSource1" runat="server" Skin="WebBlue" |
| Width="95%" AutoGenerateColumns="False" PageSize="5" AllowSorting="True" AllowPaging="True" |
| GridLines="None"> |
| <PagerStyle Mode="NumericPages"></PagerStyle> |
| <MasterTableView DataSourceID="AccessDataSource1" DataKeyNames="CustomerID" Width="100%" |
| HierarchyLoadMode="ServerOnDemand"> |
| <DetailTables> |
| <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="AccessDataSource2" Width="100%" |
| runat="server" HierarchyLoadMode="ServerOnDemand"> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID" /> |
| </ParentTableRelation> |
| <DetailTables> |
| <telerik:GridTableView DataKeyNames="OrderID" DataSourceID="AccessDataSource3" Width="100%" |
| runat="server" HierarchyLoadMode="ServerOnDemand"> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="OrderID" MasterKeyField="OrderID" /> |
| </ParentTableRelation> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="UnitPrice" HeaderText="Unit Price" HeaderButtonType="TextButton" |
| DataField="UnitPrice" UniqueName="UnitPrice"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton" |
| DataField="Quantity" UniqueName="Quantity"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton" |
| DataField="Discount" UniqueName="Discount"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton" |
| DataField="OrderID" UniqueName="OrderID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="OrderDate" HeaderText="Date Ordered" HeaderButtonType="TextButton" |
| DataField="OrderDate" UniqueName="OrderDate"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="EmployeeID" HeaderText="EmployeeID" HeaderButtonType="TextButton" |
| DataField="EmployeeID" UniqueName="EmployeeID"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| <Columns> |
| <telerik:GridBoundColumn SortExpression="CustomerID" HeaderText="CustomerID" HeaderButtonType="TextButton" |
| DataField="CustomerID" UniqueName="CustomerID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="ContactName" HeaderText="Contact Name" HeaderButtonType="TextButton" |
| DataField="ContactName" UniqueName="ContactName"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn SortExpression="CompanyName" HeaderText="Company" HeaderButtonType="TextButton" |
| DataField="CompanyName" UniqueName="CompanyName"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| <ClientSettings AllowExpandCollapse="true"> |
| </ClientSettings> |
| </telerik:RadGrid> |
| <asp:AccessDataSource ID="AccessDataSource1" DataFile="~/Grid/Data/Access/Nwind.mdb" |
| SelectCommand="SELECT * FROM Customers" runat="server"></asp:AccessDataSource> |
| <asp:AccessDataSource ID="AccessDataSource2" DataFile="~/Grid/Data/Access/Nwind.mdb" |
| SelectCommand="SELECT * FROM Orders Where CustomerID = ?" runat="server"> |
| <SelectParameters> |
| <asp:SessionParameter Name="CustomerID" SessionField="CustomerID" Type="string" /> |
| </SelectParameters> |
| </asp:AccessDataSource> |
| <asp:AccessDataSource ID="AccessDataSource3" DataFile="~/Grid/Data/Access/Nwind.mdb" |
| SelectCommand="SELECT * FROM [Order Details] where OrderID = ?" runat="server"> |
| <SelectParameters> |
| <asp:SessionParameter Name="OrderID" SessionField="OrderID" Type="Int32" /> |
| </SelectParameters> |
| </asp:AccessDataSource> |
| </div> |
| </form> |
| </body> |
| </html> |