or
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="menu_test.aspx.vb" Inherits="menu_test" %><%@ 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"><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <style type="text/css"> html, body, form { overflow: hidden; height: 100%; width: 100%; margin: 0px; padding: 0px; } </style> </head><body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="r" runat="server" /> <telerik:RadSplitter Skin="Default" runat="Server" ID="mainSplit" Width="100%" Height="100%" Orientation="Horizontal" LiveResize="true"> <telerik:RadPane ID="topPane" runat="server" Height="97"> <div> Top</div> </telerik:RadPane> <telerik:RadSplitBar runat="server" ID="SplitBarTop" CollapseMode="Forward" Height="30px" EnableResize="False" /> <telerik:RadPane runat="server" ID="cPMain" Scrolling="none"> <telerik:RadSplitter runat="server" ID="RadSplitter2" Skin="Default" BorderSize="0" BorderStyle="None" ResizeMode="Proportional"> <telerik:RadPane runat="Server" ID="leftP" Width="230px" MinWidth="500" MaxWidth="350" Scrolling="None" CssClass="relativePane"> <div style="height: 100%;"> <telerik:RadPanelBar runat="server" ID="mainPanel" Skin="Default" Height="100%" Width="100%" EnableViewState="False" ExpandMode="FullExpandedItem" CollapseDelay="100"> <Items> <telerik:RadPanelItem Text="panel1" Expanded="true" Value="CMS" id="cmsPanel"> <Items> <telerik:RadPanelItem> <ItemTemplate> <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="lp"> </telerik:RadAjaxPanel> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="Panel 2" Value="PropMS" id="PropMSPanel"> <Items> <telerik:RadPanelItem> <ItemTemplate> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="Panel 3" Value="SaleMS" id="SaleMSPanel"> <Items> <telerik:RadPanelItem> <ItemTemplate> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="p4" Expanded="false" Value="CustServ" > <Items> <telerik:RadPanelItem> <ItemTemplate> <div style="padding: 10px;"> </div> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="p5" Value="Media" id="MediaPanel"> <Items> <telerik:RadPanelItem> <ItemTemplate> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="p6" Value="membersMS" > <Items> <telerik:RadPanelItem> <ItemTemplate> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> <telerik:RadPanelItem Text="7" Value="Poll"> <Items> <telerik:RadPanelItem> <ItemTemplate> </ItemTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> </Items> </telerik:RadPanelBar> </div> </telerik:RadPane> <telerik:RadSplitBar runat="server" ID="RadSplitBar1" CollapseMode="Forward" Width="50" /> <telerik:RadPane runat="Server" ID="cP"> Content </telerik:RadPane> </telerik:RadSplitter> </telerik:RadPane> </telerik:RadSplitter> </form></body></html>
I need guidance on how best to create a self-referencing hierarchy grid where the datasource is delegate that returns an IList<>.
Once my mastertables rows are retrieved, I am able to expand the rows, which causes the NeedDatasource event to be fired where I attempt to grab that rows dependent objects and set the datasource to them, but the detail view is always empty.
I am guessing at this point I am going about this the wrong way and am hoping you can point me in the right direction.
Thanks!
Here is the grid:
<telerik:RadGrid ID="rgDependentObjects" runat="server" AllowCustomPaging="True" AllowMultiRowSelection="True" AllowPaging="True" AutoGenerateColumns="False" GridLines="None" OnItemCreated="rgDependentObjects_ItemCreated" OnDetailTableDataBind="rgDependentObjects_DetailTableDataBind"> <PagerStyle BackColor="White" Mode="Advanced" ShowPagerText="false" Position="Bottom" /> <MasterTableView AllowCustomSorting="True" datakeynames="ParentObject.ID,DependentObject.ID" EditMode="InPlace" HierarchyDefaultExpanded="false" HierarchyLoadMode="ServerOnDemand"> <SelfHierarchySettings ParentKeyName="ParentObject.ID" KeyName="DependentObject.ID" /> <Columns> <telerik:GridClientSelectColumn HeaderText="Delete"> <ItemStyle Width="6px" /> </telerik:GridClientSelectColumn> <telerik:GridHyperLinkColumn DataNavigateUrlFields="ParentObject.ID" DataNavigateUrlFormatString="riskAssetDetail.aspx?LinkID={0}" DataTextField="ParentObject.Name" HeaderText="Name" SortExpression="ParentObject.Name"> </telerik:GridHyperLinkColumn> <telerik:GridBoundColumn DataField="ParentObjectType" DataType="System.String" SortExpression="ObjectType" HeaderText="Object Type" /> </Columns> </MasterTableView> <ClientSettings AllowExpandCollapse="true"> <Selecting AllowRowSelect="True" /> </ClientSettings> </telerik:RadGrid> private IList<TruComply.DomainObjects.ScopeObjectDependency> GetDependentObjectsForAsset(out int totalRecords, TruComply.DomainObjects.Interfaces.ICriteria criteria) { //get the collection from the manager and return //return scopeManager.GetDependentObjectsForAsset(currentAssetID, out totalRecords, criteria); criteria = CriteriaBuilder.CreateCriteria(ExpressionBuilder.Is("DependentObject.ID", currentAssetID)); criteria.And(ExpressionBuilder.IsNot("ParentObjectType", "AssetGroup")); return scopeManager.GetScopeObjectDependencies(out totalRecords, criteria); }protected void rgDependentObjects_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e) { //get the detail vie's parent item GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem; if (e.DetailTableView.Name == "") { int totalRecords = 0; ICriteria criteria = CriteriaBuilder.CreateCriteria(ExpressionBuilder.Is("DependentObject.ID", dataItem.GetDataKeyValue("ParentObject.ID").ToString())); criteria.And(ExpressionBuilder.IsNot("ParentObjectType", "AssetGroup")); IList<ScopeObjectDependency> scopeObjectDependencies = scopeManager.GetScopeObjectDependencies(out totalRecords, criteria); e.DetailTableView.VirtualItemCount = scopeObjectDependencies.Count(); e.DetailTableView.DataSource = scopeObjectDependencies; } }<telerik:RadTabStrip ID="RadTabStripNav" runat="server" ontabdatabound="RadTabStripNav_TabDataBound" Skin="fleet" EnableEmbeddedSkins="False"></telerik:RadTabStrip>