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> |