I can't seem to get my detail table to load properly. I am using the NeedDataSource and DetailTableDataBind events and entity framework.
The main grid loads as expected after the NeedDataSource event, and in the DetailTableDataBind I can see at least one item in the list being set as the datasource.
However after clicking to expand the row, the detail table shows no results.
<telerik:RadGrid ID="StarTranPIsGrid" runat="server" AutoGenerateColumns="false"
OnNeedDataSource="StarTranPIsGrid_NeedDataSource" OnDetailTableDataBind="StarTranPIsGrid_DetailTableDataBind" >
<MasterTableView DataKeyNames="ID" HierarchyLoadMode="ServerBind" EnableHierarchyExpandAll="true">
<Columns>
<telerik:GridBoundColumn UniqueName="ID" DataField="ID" Visible="false" />
<telerik:GridBoundColumn UniqueName="InvoiceNumber" DataField="InvoiceNumber" HeaderText="Invoice Number" />
<telerik:GridBoundColumn UniqueName="ShipDate" DataField="ShipDate" HeaderText="Ship Date" />
</Columns>
<DetailTables>
<telerik:GridTableView DataKeyNames="StarTranPIID, SequenceNum">
<DetailItemTemplate>
<telerik:GridTableView DataKeyNames="StarTranID,SequenceNum" Width="100%" runat="server">
<Columns>
<telerik:GridBoundColumn UniqueName="PartNumber" DataField="PartNumber" HeaderText="Part Number" />
<telerik:GridBoundColumn UniqueName="OrderNumber" DataField="OrderNumber" HeaderText="Order Number" />
<telerik:GridBoundColumn UniqueName="QtyOrder" DataField="QtyOrder" HeaderText="Qty Order" />
<telerik:GridBoundColumn UniqueName="QtyShip" DataField="QtyShip" HeaderText="Qty Ship" />
<telerik:GridBoundColumn UniqueName="ReferenceNumber" DataField="ReferenceNumber" HeaderText="Reference Number" />
<telerik:GridBoundColumn UniqueName="ShipmentNumber" DataField="ShipmentNumber" HeaderText="ShipmentNumber" />
</Columns>
</telerik:GridTableView>
</DetailItemTemplate>
</telerik:GridTableView>
</DetailTables>
</MasterTableView>
</telerik:RadGrid>
protected void StarTranPIsGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
int ID = (int)Session["ShipperDetailsID"];
StarTran Transaction = context.StarTrans.FirstOrDefault(s => s.ID == ID);
if (Transaction != null)
StarTranPIsGrid.DataSource = Transaction.StarTranPIs.ToList();
}
protected void StarTranPIsGrid_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
int ID = (int)dataItem.GetDataKeyValue("ID");
List<StarTranPIPart> children = context.StarTranPIs.First(t => t.ID == ID).StarTranPIParts.ToList();
e.DetailTableView.DataSource = children; //children contains at least one item!
}
I've been following the demos and documentation:
http://demos.telerik.com/aspnet-ajax/grid/examples/data-binding/programmatic-hierarchy/defaultcs.aspx
http://www.telerik.com/help/aspnet-ajax/grid-binding-hierarchical-grids.html
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-detailtabledatabind.html
Can anyone provide any insight into what I am missing to get my details table to populate?
The main grid loads as expected after the NeedDataSource event, and in the DetailTableDataBind I can see at least one item in the list being set as the datasource.
However after clicking to expand the row, the detail table shows no results.
<telerik:RadGrid ID="StarTranPIsGrid" runat="server" AutoGenerateColumns="false"
OnNeedDataSource="StarTranPIsGrid_NeedDataSource" OnDetailTableDataBind="StarTranPIsGrid_DetailTableDataBind" >
<MasterTableView DataKeyNames="ID" HierarchyLoadMode="ServerBind" EnableHierarchyExpandAll="true">
<Columns>
<telerik:GridBoundColumn UniqueName="ID" DataField="ID" Visible="false" />
<telerik:GridBoundColumn UniqueName="InvoiceNumber" DataField="InvoiceNumber" HeaderText="Invoice Number" />
<telerik:GridBoundColumn UniqueName="ShipDate" DataField="ShipDate" HeaderText="Ship Date" />
</Columns>
<DetailTables>
<telerik:GridTableView DataKeyNames="StarTranPIID, SequenceNum">
<DetailItemTemplate>
<telerik:GridTableView DataKeyNames="StarTranID,SequenceNum" Width="100%" runat="server">
<Columns>
<telerik:GridBoundColumn UniqueName="PartNumber" DataField="PartNumber" HeaderText="Part Number" />
<telerik:GridBoundColumn UniqueName="OrderNumber" DataField="OrderNumber" HeaderText="Order Number" />
<telerik:GridBoundColumn UniqueName="QtyOrder" DataField="QtyOrder" HeaderText="Qty Order" />
<telerik:GridBoundColumn UniqueName="QtyShip" DataField="QtyShip" HeaderText="Qty Ship" />
<telerik:GridBoundColumn UniqueName="ReferenceNumber" DataField="ReferenceNumber" HeaderText="Reference Number" />
<telerik:GridBoundColumn UniqueName="ShipmentNumber" DataField="ShipmentNumber" HeaderText="ShipmentNumber" />
</Columns>
</telerik:GridTableView>
</DetailItemTemplate>
</telerik:GridTableView>
</DetailTables>
</MasterTableView>
</telerik:RadGrid>
protected void StarTranPIsGrid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
int ID = (int)Session["ShipperDetailsID"];
StarTran Transaction = context.StarTrans.FirstOrDefault(s => s.ID == ID);
if (Transaction != null)
StarTranPIsGrid.DataSource = Transaction.StarTranPIs.ToList();
}
protected void StarTranPIsGrid_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
int ID = (int)dataItem.GetDataKeyValue("ID");
List<StarTranPIPart> children = context.StarTranPIs.First(t => t.ID == ID).StarTranPIParts.ToList();
e.DetailTableView.DataSource = children; //children contains at least one item!
}
I've been following the demos and documentation:
http://demos.telerik.com/aspnet-ajax/grid/examples/data-binding/programmatic-hierarchy/defaultcs.aspx
http://www.telerik.com/help/aspnet-ajax/grid-binding-hierarchical-grids.html
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-detailtabledatabind.html
Can anyone provide any insight into what I am missing to get my details table to populate?