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

[Solved] Hierarchy fails to display Level 3

2 Answers 155 Views
Grid
This is a migrated thread and some comments may be shown as answers.
nick chance
Top achievements
Rank 1
nick chance asked on 11 Mar 2013, 02:44 PM

I have 3 levels
Top Level - Client Job   
2nd Level - JobTask
3rd Level  - TaskStockRequirments  

The ClentId for the TopLevel is achieved through :-

Protected Sub SqlTopLevel_Clients_Selecting(sender As Object, e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlTopLevel_Clients.Selecting
If hdnClientId.Value = "" Then hdnClientId.Value = "1"
e.Command.CommandText = "SELECT * FROM bm_ClientJob Where ClientId = " & CStr(hdnClientId.Value)
End Sub

and this is ok and the Level 2 is displayed OK but I can't understand why Level 3 doesn't appear.

<%-- CLIENT JOBS HIERARCHICAL GRIDS --%>
 <telerik:RadSlidingPane ID="rspClientJobs" Title="Client Jobs" runat="server" Height="650px">
 
     <telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="false" />
     <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
         <AjaxSettings>
             <telerik:AjaxSetting AjaxControlID="grdClientJobs">
                 <UpdatedControls>
                     <telerik:AjaxUpdatedControl ControlID="grdClientJobs"></telerik:AjaxUpdatedControl>
                 </UpdatedControls>
             </telerik:AjaxSetting>
         </AjaxSettings>
     </telerik:RadAjaxManager>
 
     <telerik:RadGrid ID="grdClientJobs"    OnPreRender="grdClientJobs_PreRender" ShowStatusBar="True"
         DataSourceID="SqlTopLevel_Clients" runat="server"
         AutoGenerateColumns="False" PageSize="7"
         AllowSorting="True" AllowPaging="True" GridLines="None" CellSpacing="0">
         <PagerStyle Mode="NumericPages"></PagerStyle>
         <MasterTableView DataSourceID="SqlTopLevel_Clients" DataKeyNames="JobId" AllowMultiColumnSorting="True" HierarchyLoadMode="Client" Width="100%">
 
             <DetailTables>
 
                 <telerik:GridTableView DataKeyNames="JobId" DataSourceID="SqlLevel2_ClientJobs" Width="100%"
                     runat="server">
                     <ParentTableRelation>
                         <telerik:GridRelationFields DetailKeyField="JobId" MasterKeyField="JobId">
                         </telerik:GridRelationFields>
                     </ParentTableRelation>
 
                     <%--LEVEL 3 GRID TABLE - JOBTASKS COLUMNS--%>
 
                    <DetailTables>
 
                         <telerik:GridTableView DataKeyNames="TaskId" DataSourceID="SqlLevel3_ClientJobTasks" Width="100%"
                             runat="server">
                             <ParentTableRelation>
                                 <telerik:GridRelationFields DetailKeyField="TaskId" MasterKeyField="TaskId"></telerik:GridRelationFields>
                             </ParentTableRelation>
                             <Columns>
                                 <telerik:GridBoundColumn SortExpression="Requirement" HeaderText="Requirement" HeaderButtonType="TextButton"
                                     DataField="Requirement" UniqueName="Requirement">
                                 </telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn SortExpression="Supplier" HeaderText="Supplier" HeaderButtonType="TextButton"
                                     DataField="Supplier" UniqueName="Supplier">
                                 </telerik:GridBoundColumn>
                                  <telerik:GridBoundColumn SortExpression="Amount" HeaderText="Amount" HeaderButtonType="TextButton"
                                     DataField="Amount" UniqueName="Amount">
                                 </telerik:GridBoundColumn>                                                  
                                  <telerik:GridBoundColumn SortExpression="Units" HeaderText="Units" HeaderButtonType="TextButton"
                                     DataField="Units" UniqueName="Units">
                                 </telerik:GridBoundColumn>                                                  
                              </Columns>
                             <SortExpressions>
                                 <telerik:GridSortExpression FieldName="TaskName" SortOrder="Descending"></telerik:GridSortExpression>
                             </SortExpressions>
                         </telerik:GridTableView>
                     </DetailTables>
 
                    <%--LEVEL 2 GRID TABLE - CLIENT JOB COLUMNS--%>
                             <Columns>
                                 <telerik:GridBoundColumn SortExpression="TaskId" HeaderText="Task Id" HeaderButtonType="TextButton"
                                     DataField="TaskId" UniqueName="TaskId">
                                 </telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn SortExpression="TaskSeqNo" HeaderText="Seq No" HeaderButtonType="TextButton"
                                     DataField="TaskSeqNo" UniqueName="TaskSeqNo">
                                 </telerik:GridBoundColumn>
                                 <telerik:GridBoundColumn SortExpression="TaskName" HeaderText="Name" HeaderButtonType="TextButton"
                                     DataField="TaskName" UniqueName="TaskName">
                                 </telerik:GridBoundColumn>
                             </Columns>
                             <SortExpressions>
                                 <telerik:GridSortExpression FieldName="TaskName" SortOrder="Descending"></telerik:GridSortExpression>
                             </SortExpressions>
                 </telerik:GridTableView>
             </DetailTables>
             <%--TOP LEVEL CLIENT COLUMNS--%>
                    <Columns>
                         <telerik:GridBoundColumn SortExpression="JobId" HeaderText="JobId" HeaderButtonType="TextButton"
                             DataField="JobId" UniqueName="JobId">
                         </telerik:GridBoundColumn>
                         <telerik:GridBoundColumn SortExpression="StartDate" HeaderText="Date Start" HeaderButtonType="TextButton"
                             DataField="StartDate" UniqueName="StartDate" DataFormatString="{0:D}">
                         </telerik:GridBoundColumn>
                         <telerik:GridBoundColumn SortExpression="JobName" HeaderText="Name" HeaderButtonType="TextButton"
                             DataField="JobName" UniqueName="JobName">
                         </telerik:GridBoundColumn>
                     </Columns>
         </MasterTableView>
     </telerik:RadGrid>
 
   <%--HIERARCHICAL GRIDS SQL DATA SOURCES--%>
 
     <asp:SqlDataSource ID="SqlTopLevel_Clients" ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>"
         ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM bm_ClientJob Where ClientId = @ClientId"
         runat="server">
     </asp:SqlDataSource>
 
     <asp:SqlDataSource ID="SqlLevel2_ClientJobs" ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>"
         ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM bm_JobTask where JobId = @JobId Order By TaskSeqNo"
         runat="server">
         <SelectParameters>
             <asp:SessionParameter Name="JobId" SessionField="JobId" Type="Int32"></asp:SessionParameter>
        </SelectParameters>
     </asp:SqlDataSource>
 
     <asp:SqlDataSource ID="SqlLevel3_ClientJobTasks" ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>"
         ProviderName="System.Data.SqlClient" SelectCommand="SELECT * FROM bm_TaskStockRequirement where TaskId = @TaskId"
         runat="server">
         <SelectParameters>
             <asp:SessionParameter Name="TaskId" SessionField="TaskId" Type="Int32"></asp:SessionParameter>
         </SelectParameters>
     </asp:SqlDataSource>


Any ideas please?

2 Answers, 1 is accepted

Sort by
0
Milena
Telerik team
answered on 14 Mar 2013, 11:18 AM
Hello,

It is necessary to set "JobId" as a MasterKeyField to the ParentTableRelation settings of the third level. The key field should refer to parent GridTableView DataField which you want to use as relation. The MasterKeyField in the GridRelationFields should match the primary key of the parent table in the corresponding relation.

All the best,
Milena
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
nick chance
Top achievements
Rank 1
answered on 14 Mar 2013, 11:42 AM

Many thanks Milena that's done the trick. (And changing the GridSortExpression FieldName to "Requirement"). Great response, thanks again.

 

 

 

 

Tags
Grid
Asked by
nick chance
Top achievements
Rank 1
Answers by
Milena
Telerik team
nick chance
Top achievements
Rank 1
Share this question
or