This is a migrated thread and some comments may be shown as answers.

Hierarchy in grids

1 Answer 70 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Pic
Top achievements
Rank 1
Pic asked on 20 Apr 2012, 05:31 PM
Hi, I am trying to populate a RadGrid with a sub table. i can't manage to get the sub table populated (the link between table doesn't seems to be correctly setup).

I have manager to make it working with a simple grid having the property AutoGenerateHierarchy="true" and providing a single dataset with DataRelation.

How can I make it work without the setting AutoGenerateHierarchy? I don't want the columns to be automaticaly populated.

Can you help me?

--------------- ASP code ---------------------
<telerik:RadGrid runat="server" ID="MainGrid" Skin="Office2007"  Height="100%" Width="100%"
    AutoGenerateHierarchy="false" AutoGenerateColumns="false">
    <MasterTableView HierarchyLoadMode="Client">
        <DetailTables>
            <telerik:GridTableView DataKeyNames="SubTableID" Name="SubGrid" Width="100%"
                AutoGenerateColumns="false">
                <ParentTableRelation>
                    <telerik:GridRelationFields DetailKeyField="SubTableID" MasterKeyField="ID" />
                </ParentTableRelation>
                <Columns>
                    <telerik:GridBoundColumn HeaderText="SubTableID" DataField="SubTableID" />
                    <telerik:GridBoundColumn HeaderText="ValueColumnInSubTable" DataField="ValueColumnInSubTable" />
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
        <Columns>
            <telerik:GridBoundColumn HeaderText="ID" DataField="ID" />
            <telerik:GridBoundColumn HeaderText="ValueColumnInMainTable" DataField="ValueColumnInMainTable" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>
  

---------------- VB code ------------------------
   Dim dsMain As DataSet = GetMainDataset()
   Me.MainGrid.DataSource = dsMain

   Dim dsSub As DataSet = GetSubDataset()
   Me.MainGrid.MasterTableView.DetailTables(0).DataSource = dsSub
   Me.MainGrid.DataBind()

1 Answer, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 21 Apr 2012, 09:05 AM
Hello Pic,

Please check below code snippet.

<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource"
       AllowPaging="True" AutoGenerateColumns="false" OnDetailTableDataBind="RadGrid1_DetailTableDataBind">
       <MasterTableView DataKeyNames="ID">
           <Columns>
               <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
               </telerik:GridBoundColumn>
           </Columns>
           <DetailTables>
               <telerik:GridTableView>
                   <Columns>
                       <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                       </telerik:GridBoundColumn>
                   </Columns>
               </telerik:GridTableView>
           </DetailTables>
       </MasterTableView>
   </telerik:RadGrid>

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
  {
      dynamic data = new[] {
              new { ID = 1, Name ="Name1"},
              new { ID = 2, Name ="Name2"}
          };
 
      RadGrid1.DataSource = data;
  }
 
 
  protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
  {
      GridDataItem item = e.DetailTableView.ParentItem as GridDataItem;
      string ID = item.GetDataKeyValue("ID").ToString();
 
 
      dynamic data = new[] {
              new { ID = 1, Name ="Name_" + ID},
              new { ID = 2, Name ="Name_" + ID}
          };
 
 
      e.DetailTableView.DataSource = data;
  }


Thanks,
Jayesh Goyani
Tags
Grid
Asked by
Pic
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Share this question
or