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

heiarchial radgrid not loading 3rd tier

3 Answers 81 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Kevin
Top achievements
Rank 1
Kevin asked on 13 Jul 2011, 05:35 PM

I originally build a 2 tier grid but then need to put a 3rd tier on it, I followed the example site for tiered grids for adding on but when I build and run the 3rd portion never show up even though I have information in the database to show.  What am i doing wrong here.

 <telerik:RadGrid ID="myGridDeploy" runat="server" Width="95%" BorderWidth="1px" CellPadding="6" GridLines="None" BorderColor="#404040" Skin="Web20">
                                    <MasterTableView AutoGenerateColumns="false" DataKeyNames="intMobilizationId" HierarchyDefaultExpanded="false" HierarchyLoadMode="ServerBind"
                                        BorderColor="#404040" Font-Size="12" Font-Names="Veranda,arial,sans-serif" HeaderStyle-HorizontalAlign="Center"
                                        GridLines="Both" BorderWidth="1px" ExpandCollapseColumn-ButtonType="ImageButton" ExpandCollapseColumn-CollapseImageUrl="~/Images/30.png"
                                        ExpandCollapseColumn-ExpandImageUrl="~/Images/29.png"><ItemStyle HorizontalAlign="Center" />
                                        <AlternatingItemStyle BackColor="#B0C4DE"  HorizontalAlign="Center" />
                                        <HeaderStyle ForeColor="White" Font-Bold="true" BorderColor="#404040" BorderWidth="1px" />
                                        <Columns>
                                             <telerik:GridTemplateColumn HeaderText="Deployment" ItemStyle-HorizontalAlign="Left">
                                                <ItemTemplate>
                                                     <asp:LinkButton ID="lnkEdit" runat="server" CommandArgument='<%# bind("intMobilizationId") %>' CommandName="EditDeploy" text='<%# bind("strDeployment") %>'></asp:LinkButton>
                                                </ItemTemplate>
                                            </telerik:GridTemplateColumn>
                                            <telerik:GridBoundColumn DataField="strHiearchy" HeaderText="UIC" />
                                            <telerik:GridBoundColumn DataField="dtDeploy" Headertext="DT_Deploy" />
                                            <telerik:GridBoundColumn DataField="dtDemob" HeaderText="DT_Demob" />
                                            <telerik:GridTemplateColumn HeaderText="Add Unit">
                                                <ItemTemplate>
                                                      <asp:ImageButton runat="server" ID="imgAdd"  CommandArgument='<%# bind("intMobilizationId") %>' CommandName="AddUnit" ImageUrl="~/Images/29.png" />
                                                </ItemTemplate>
                                            </telerik:GridTemplateColumn>
                                            <telerik:GridTemplateColumn HeaderText="Delete">
                                                <ItemTemplate>
                                                      <asp:ImageButton runat="server" ID="imgDelete"  CommandArgument='<%# bind("intMobilizationId") %>' CommandName="DelDeploy" ImageUrl="~/Images/Delete Circle Small.png" OnClientClick="return confirm('Are you sure you want to delete deployment and all information!');" />
                                                </ItemTemplate>
                                            </telerik:GridTemplateColumn>
                                             <telerik:GridTemplateColumn HeaderText="Archive">
                                                <ItemTemplate>
                                                      <asp:ImageButton runat="server" ID="imgArchive"  CommandArgument='<%# bind("intMobilizationId") %>' CommandName="Archive" ImageUrl="~/Images/edit_icon.png" OnClientClick="return confirm('Are you sure you want to archive deployment');" />
                                                </ItemTemplate>
                                            </telerik:GridTemplateColumn>
                                        </Columns>
                                        <DetailTables>
                                            <telerik:GridTableView Name="mySubUnits" runat="server" DataKeyNames="intUnitMobId" TableLayout="Fixed" BorderWidth="1px" CellPadding="6" Font-Size="10"
                                                AutoGenerateColumns="False" HeaderStyle-HorizontalAlign="Center" BorderColor="#404040" Font-Names="Veranda,arial,sans-serif" GridLines="Both" ExpandCollapseColumn-ButtonType="ImageButton"
                                                ExpandCollapseColumn-CollapseImageUrl="~/Images/30.png" ExpandCollapseColumn-ExpandImageUrl="~/Images/29.png">
                                                <ParentTableRelation>
                                                    <telerik:GridRelationFields DetailKeyField="intMobilizationId" MasterKeyField="intMobilizationId" />
                                                </ParentTableRelation>
                                                <HeaderStyle Font-Bold="true" HorizontalAlign="Center" CssClass="MostInnerHeaderStyle" />
                                                <ItemStyle CssClass="MostInnerItemStyle" HorizontalAlign="Center" />
                                                <AlternatingItemStyle CssClass="MostInnerAlernatingItemStyle" HorizontalAlign="Center" />
                                                <DetailTables>
                                                    <telerik:GridTableView DataKeyNames="intPositionId" Name="mySubPosition" Width="100%">
                                                         <ParentTableRelation>
                                                            <telerik:GridRelationFields DetailKeyField="intUnitMobId" MasterKeyField="intUnitMobId" />
                                                         </ParentTableRelation>
                                                         <Columns>
                                                            <telerik:GridBoundColumn DataField="strPara" HeaderText="Para" />
                                                            <telerik:GridBoundColumn DataField="strLine" Headertext="Line" />
                                                            <telerik:GridBoundColumn DataField="intPositionNum" HeaderText="Position" />
                                                         </Columns>
                                                    </telerik:GridTableView>
                                                </DetailTables>
                                                <Columns>
                                                    <telerik:GridTemplateColumn HeaderText="Unit" ItemStyle-HorizontalAlign="Left">
                                                        <ItemTemplate>
                                                             <asp:LinkButton ID="lnkEdit" runat="server" CommandArgument='<%# bind("intUnitMobId") %>' CommandName="EditUnit" text='<%# bind("strUIC") %>'></asp:LinkButton>
                                                        </ItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                    <telerik:GridBoundColumn DataField="strAAUIC" HeaderText="BN Uic" />
                                                    <telerik:GridBoundColumn DataField="strMobOrderNum" HeaderText="Order Num" />
                                                    <telerik:GridBoundColumn DataField="dtDeploy" HeaderText="DT_Deploy" />
                                                    <telerik:GridBoundColumn DataField="dtProjDemob" HeaderText="DT_Demob" />
                                                    <telerik:GridTemplateColumn HeaderText="Add Position">
                                                        <ItemTemplate>
                                                              <asp:ImageButton runat="server" ID="imgAddPosition"  CommandArgument='<%# bind("intUnitMobId") %>' CommandName="AddPosition" ImageUrl="~/Images/29.png" />
                                                        </ItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                     <telerik:GridTemplateColumn HeaderText="Del All Position">
                                                        <ItemTemplate>
                                                              <asp:ImageButton runat="server" ID="imgDelPosition"  CommandArgument='<%# bind("intUnitMobId") %>' CommandName="DelAllPosition" ImageUrl="~/Images/30.png"
                                                              OnClientClick="return confirm('Are you sure you want to delete all positions');"/>
                                                        </ItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                     <telerik:GridTemplateColumn HeaderText="Import Positions">
                                                        <ItemTemplate>
                                                              <asp:ImageButton runat="server" ID="imgImportPosition"  CommandArgument='<%# bind("intUnitMobId") %>' CommandName="AddMul" ImageUrl="~/Images/Import.png" />
                                                        </ItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                    <telerik:GridTemplateColumn HeaderText="Delete Unit">
                                                        <ItemTemplate>
                                                              <asp:ImageButton runat="server" ID="imgDelete"  CommandArgument='<%# bind("intUnitMobId") %>' CommandName="DelUnit" ImageUrl="~/Images/Delete Circle Small.png"
                                                              OnClientClick="return confirm('Are you sure you want to delete unit and all positions');" />
                                                        </ItemTemplate>
                                                    </telerik:GridTemplateColumn>
                                                </Columns>
                                            </telerik:GridTableView>
                                        </DetailTables>
                                    </MasterTableView>
                                </telerik:RadGrid>


 Private Sub LoadGrid()
        Dim Id As String = ddlDeployments.SelectedValue
        Dim sqlwhere As String = ""

        If Id = "00" Then
            sqlwhere = ""
        Else
            sqlwhere = " and intMobilizationId = " & Id
        End If

        sql = "Select intMobilizationId, strDeployment, strHiearchy, Convert(varchar(10), dtDeploy, 111) dtDeploy, Convert(varchar(10), dtDemob, 111) dtDemob from tblMobDeployment " _
            & "where bitArchive is NULL " & sqlwhere & " Order by dtDeploy"
       
        myDataTable = New DataTable
        myDataTable = getData(sql)

        myGridDeploy.DataSource = myDataTable
        myGridDeploy.DataBind()

    End Sub

 'All code associated with the detail tables of the gridview
    Protected Sub myGridDeploy_DetailTableDataBind(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridDetailTableDataBindEventArgs) Handles myGridDeploy.DetailTableDataBind

        Dim dataItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem)
            Select e.DetailTableView.Name
            Case "mySubUnits"
                sql = "Select intUnitMobId, intMobilizationId, strMobOrderNum, strAAUic, strUIC, CONVERT(varchar(10), dtDeploy, 111) dtDeploy, CONVERT(varchar(10), dtProjDemob, 111) dtProjDemob from tblMobUnits " _
                    & "where bitArchive is NULL and intMobilizationId = " & e.DetailTableView.ParentItem.GetDataKeyValue("intMobilizationId") & " Order by intMobilizationId"

                e.DetailTableView.DataSource = getData(sql)

            Case "mySubPosition"
                sql = "Select intPositionId, intUnitMobId, strPara, strLine, intPositionNum from tblMobUnitPosition " _
                   & "where intUnitMobId in (Select intUnitMobId from tblMobUnits where intMobilizationId = " & e.DetailTableView.ParentItem.GetDataKeyValue("intMobilizationId") & ")"

                e.DetailTableView.DataSource = getData(sql)
        End Select
    End Sub

    Protected Sub myGridDeploy_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles myGridDeploy.Init
        myGridDeploy.MasterTableView.ExpandCollapseColumn.ItemStyle.CssClass = "expandCol"
    End Sub

    Protected Sub myGridDeploy_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles myGridDeploy.PreRender
        HideExpandColumnRecursive(myGridDeploy.MasterTableView)
    End Sub




3 Answers, 1 is accepted

Sort by
0
Elliott
Top achievements
Rank 2
answered on 13 Jul 2011, 06:38 PM
well, for starters, you're not using code blocks for your app

but seriously, the more complicated the data retrieval the smarter it is to let Telerik decide when to populate the grid
I'd pull out much of your code and put in a NeedDataSource event handler
this is a 3 tiered page which has all it's data access on this page
<%@ Page Title="" Language="VB" MasterPageFile="~/Squirrel.master" AutoEventWireup="false" CodeFile="SpiffMaintenance.aspx.vb" Inherits="SpiffMaintenance" %>
<asp:Content ID="cntHead" ContentPlaceHolderID="cpHead" Runat="Server">
<title>Squirrel Online Orders - Spiff Maintenance</title>
<link href="MDE2010.css" rel="Stylesheet" />
</asp:Content>
<asp:Content ID="cntBody" ContentPlaceHolderID="cpHolder" Runat="Server">
    <telerik:RadScriptManager ID="rsManager" runat="server" />
    <telerik:RadCodeBlock ID="rcBlock" runat="server">
        <script type="text/javascript">
            function ConfirmDelete() {
                if (confirm("Are you sure you want to delete this spiff?") == true)
                    return true;
                else
                    return false;
            }         
        </script>
    </telerik:RadCodeBlock>
    <telerik:RadAjaxManager ID="raManager" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="rgSpiffDetail">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="rcbVendors" />
                    <telerik:AjaxUpdatedControl ControlID="rgSpiffDetail" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    <table border="0" cellpadding="2" cellspacing="2">
    <tr>
    <td> </td>
    <td align="right">
        <asp:Button ID="cmdPrint" Text="Print" runat="server" />
    </td>
    </tr>
    <tr>
    <td colspan="2">
        <telerik:RadGrid ID="rgSpiffDetail" DataSourceID="sdsVendors" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="True" AllowFilteringByColumn="true"
        AllowAutomaticInserts="False" AllowAutomaticDeletes="False" AllowAutomaticUpdates="False" Width="95%" runat="server" >
        <GroupingSettings CaseSensitive="false" />       
        <MasterTableView Name="Vendors" DataSourceID="sdsVendors" DataKeyNames="VendorID" CommandItemDisplay="None" Width="100%">
            <DetailTables>
                <telerik:GridTableView Name="Spiffs" DataKeyNames="SpiffID" DataSourceID="sdsSpiffs" CommandItemDisplay="Top" AllowFilteringByColumn="False" Width="100%" runat="server" >
                <CommandItemSettings AddNewRecordText="New Spiff" />
                <ParentTableRelation>
                    <telerik:GridRelationFields MasterKeyField="VendorID" DetailKeyField="VendorID" />
                </ParentTableRelation>
                <DetailTables>
                    <telerik:GridTableView Name="Items" DataKeyNames="SpiffID,ItemID" DataSourceID="sdsItems" CommandItemDisplay="Top" AllowFilteringByColumn="False" Width="100%" runat="server" >
                    <CommandItemSettings AddNewRecordText="Chose Item(s)" />
                    <ParentTableRelation>
                        <telerik:GridRelationFields MasterKeyField="SpiffID" DetailKeyField="SpiffID" />
                    </ParentTableRelation>
                <Columns>
                    <telerik:GridBoundColumn UniqueName="VendorID" DataField="VendorID" Visible="False" />
                    <telerik:GridBoundColumn UniqueName="SpiffID" DataField="SpiffID" HeaderText="SpiffID" />
                    <telerik:GridBoundColumn UniqueName="ItemID" DataField="ItemID" HeaderText="ItemID" />
                    <telerik:GridBoundColumn UniqueName="SMKPartNo" DataField="SMKPartNo" HeaderText="SMK Part Number" />
                    <telerik:GridBoundColumn UniqueName="SNLPartNo" DataField="SNLPartNo" HeaderText="SNL Part Number" />
                    <telerik:GridBoundColumn UniqueName="Description" DataField="Description" HeaderText="Description" />
                    <telerik:GridButtonColumn UniqueName="DeleteColumn" CommandName="Delete" Text="Remove" />
                </Columns>
                <EditFormSettings EditFormType="Template">
                    <FormTemplate>
                    <table border="0" cellpadding="2" cellspacing="2">
                    <tr>
                    <td>Items</td>
                    <td>
                        <telerik:RadListBox ID="rlbItems" SelectionMode="Multiple" AutoPostBack="true" Width="300px" runat="server" />
                    </td>
                    </tr>
                    <tr>
                    <td>
                        <asp:Button ID="btnCancel" Text="Cancel" CommandName="Cancel" CausesValidation="false" runat="server" />
                    </td>
                    <td>
                        <asp:Button ID="btnAddtoSpiff" Text="Add to Spiff" CommandName="PerformInsert" runat="server" />
                    </td>
                    </tr>
                    </table>
                    </FormTemplate>
                </EditFormSettings>
                </telerik:GridTableView>                                               
                </DetailTables>
            <Columns>
                <telerik:GridButtonColumn UniqueName="EditColumn" Text="Edit" CommandName="Edit" /> 
                <telerik:GridBoundColumn UniqueName="SpiffID" DataField="SpiffID" HeaderText="SpiffID" ReadOnly="True" />
                <telerik:GridBoundColumn UniqueName="Seq" DataField="Seq" HeaderText="seq" />               
                <telerik:GridTemplateColumn UniqueName="CashBack" HeaderText="CashBack" >
                    <ItemTemplate>
                        <asp:Label ID="lblCashBack" Text='<%# Bind("CashBack") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadNumericTextBox ID="rntbCashBack" text='<%# Eval("CashBack") %>' runat="server">
                            <NumberFormat DecimalDigits="2" />
                        </telerik:RadNumericTextBox>
                        <asp:RequiredFieldValidator ID="rfvCashBack" ControlToValidate="rntbCashBack" ErrorMessage="Required" runat="server" />
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridBoundColumn UniqueName="CaseDollarItem" DataField="CaseDollarItem" HeaderText="CaseDollarItem" />
                <telerik:GridCheckBoxColumn UniqueName="AllorByItem" DataField="AllOrByItem" HeaderText="AllItems" />
                <telerik:GridTemplateColumn UniqueName="QtytoOrder" HeaderText="Qty to Order">
                    <ItemTemplate>
                        <asp:Label ID="lblQtytoOrder" Text='<%# Bind("QtytoOrder") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadNumericTextBox ID="rntbQtytoOrder" Text='<%# Eval("QtytoOrder") %>' runat="server" >
                            <NumberFormat DecimalDigits="0" />
                        </telerik:RadNumericTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="DollartoOrder" HeaderText="$ to Order">
                    <ItemTemplate>
                        <asp:Label ID="lblDollartoOrder" Text='<%# Eval("DollartoOrder") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadNumericTextBox ID="rntbDollartoOrder" runat="server" >
                            <NumberFormat DecimalDigits="2" />
                        </telerik:RadNumericTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="MinQty" HeaderText="Min Qty">
                    <ItemTemplate>
                        <asp:Label ID="lblMinQty" Text='<%# Eval("MinQty") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadNumericTextBox ID="rntbMinQty" runat="server" >
                            <NumberFormat DecimalDigits="0" />
                        </telerik:RadNumericTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="MinDollar" HeaderText="Min Dollar">
                    <ItemTemplate>
                        <asp:Label ID="lblMinDollar" Text='<%# Eval("MinDollar") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadNumericTextBox ID="rntbMinDollar" runat="server" >
                            <NumberFormat DecimalDigits="2" />
                        </telerik:RadNumericTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="SpiffDescription" >
                    <ItemTemplate>
                        <asp:Label ID="lblSpiffDescription" Text='<%# Eval("SpiffDescription") %>' runat="server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <telerik:RadTextBox ID="rtbSpiffDescription" Text='<%# Eval("SpiffDescription") %>' Width="500px" runat="server">
                        </telerik:RadTextBox>
                    </EditItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridButtonColumn UniqueName="DeleteColumn" CommandName="Delete" Text="Delete" />
            </Columns>
            </telerik:GridTableView>
        </DetailTables>
        <Columns>
            <telerik:GridBoundColumn UniqueName="VendorID" DataField="VendorID" Allowfiltering="False" HeaderText="VendorID" />
            <telerik:GridBoundColumn UniqueName="SMKPrefix" DataField="SMKPrefix"  CurrentFilterFunction="StartsWith" AutoPostBackOnFilter="True" HeaderText="SMK Prefix" />
            <telerik:GridBoundColumn UniqueName="VendorName" DataField="VendorName" CurrentFilterFunction="StartsWith" AutoPostBackOnFilter="True" HeaderText="VendorName">
                <HeaderStyle Width="200" />
            </telerik:GridBoundColumn>
        </Columns>
        </MasterTableView>
        </telerik:RadGrid>
    </td>
    </tr>
    </table>
    <asp:SqlDataSource ID="sdsVendors"
        ConnectionString="<%$ ConnectionStrings:bozz_SquirrelConnectionString %>"
        SelectCommand="get_vendors_for_spiff_maintanance" SelectCommandType="StoredProcedure" runat="server" >
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sdsSpiffs"
        ConnectionString="<%$ ConnectionStrings:bozz_SquirrelConnectionString %>"
        SelectCommand="get_spiff_details" SelectCommandType="StoredProcedure" runat="server" >
        <SelectParameters>
            <asp:Parameter Name="VendorID" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sdsItems"
        ConnectionString="<%$ ConnectionStrings:bozz_SquirrelConnectionString %>"
        SelectCommand="get_items_for_spiff" SelectCommandType="StoredProcedure" runat="server" >
        <SelectParameters>
            <asp:Parameter Name="SpiffID" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>
</asp:Content>
0
Kevin
Top achievements
Rank 1
answered on 13 Jul 2011, 07:11 PM
Hi,
Well, there is other stuff on the page besides just my grids, I don't use sqldatasources on the html side so the example is not much help to me since we seperate logic and presentation.  My code works fine, it just does not load the 3rd tier for some reason but loads everything else to the radgrid, followed the site example but just does not work.
0
Vasil
Telerik team
answered on 19 Jul 2011, 11:05 AM
Hi Kevin,

Currently in your code you are mixing the simple with advanced databinding and this could cause the issue. You should follow the demo more strictly in order to achieve the working functionality. Make your code to use advanced data binding only.
If you need to tell the grid when to bind itself just use Rebind function of the grid instead of binding inside the LoadGrid function. You will need to populate the master table on NeedDataSource event.

All the best,
Vasil
the Telerik team

Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

Tags
Grid
Asked by
Kevin
Top achievements
Rank 1
Answers by
Elliott
Top achievements
Rank 2
Kevin
Top achievements
Rank 1
Vasil
Telerik team
Share this question
or