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

[Solved] how to expand All detail table and sub detailtable on start/load/init

4 Answers 671 Views
Grid
This is a migrated thread and some comments may be shown as answers.
DragonBall
Top achievements
Rank 1
DragonBall asked on 05 Mar 2010, 01:57 PM
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateEditColumn="True" DataSourceID="SqlDataSource1" 
    GridLines="None" PageSize="15" OnItemDataBound="RadGrid1_ItemDataBound" AllowPaging="True" 
    OnItemCreated="RadGrid1_ItemCreated" AllowSorting="True" Skin="Vista" OnItemCommand="RadGrid1_ItemCommand" 
    OnPreRender="RadGrid1_PreRender" AllowAutomaticUpdates="True" >  
    <MasterTableView AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="ticket_id, id" 
        CommandItemDisplay="Top"
        <CommandItemTemplate> 
            <table> 
                <tr> 
                    <td> 
                        <asp:ImageButton ImageUrl="~/image/AddRecord.gif" ID="btnAllTickets" runat="server" 
                            CommandName="AllFiles" /> 
                        All Tickets 
                    </td> 
                    <td> 
                        <asp:ImageButton ImageUrl="~/image/AddRecord.gif" ID="btnUnansweredTickets" runat="server" 
                            CommandName="Unanswered" /> 
                        Unanswered Tickets </asp:LinkButton> 
                    </td> 
                </tr> 
            </table> 
        </CommandItemTemplate> 
        <RowIndicatorColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
        </RowIndicatorColumn> 
        <ExpandCollapseColumn> 
            <HeaderStyle Width="20px"></HeaderStyle> 
        </ExpandCollapseColumn> 
        <Columns> 
            <telerik:GridBoundColumn DataField="id" HeaderText="id" SortExpression="id" UniqueName="id" 
                DataType="System.Int64" Visible="false"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="t_id" HeaderText="t_id" ReadOnly="True" 
                SortExpression="ticket_id" UniqueName="ticket_id" Visible="false"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="username" HeaderText="Username" SortExpression="username" 
                UniqueName="username"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="subject" HeaderText="Subject" SortExpression="subject" 
                UniqueName="subject"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="department" HeaderText="department" SortExpression="department" 
                UniqueName="department" Visible="false"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="priority" DataType="System.Int32" HeaderText="priority" 
                SortExpression="priority" UniqueName="priority" Visible="false"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="status" HeaderText="status" SortExpression="status" 
                UniqueName="status" DataType="System.Int32" Visible="false"
            </telerik:GridBoundColumn> 
            <telerik:GridBoundColumn DataField="last_replier" HeaderText="last_replier" SortExpression="last_replier" 
                UniqueName="last_replier" Visible="false"
            </telerik:GridBoundColumn> 
        </Columns> 
        <DetailTables> 
           
            <telerik:GridTableView DataKeyNames="ticket_id, id" DataSourceID="SqlDataSource2" 
                Width="100%" runat="server" AutoGenerateColumns="false" OnSelectedIndexChanged="RadGrid1_SelectedIndexChanged"
                <ParentTableRelation> 
                    <telerik:GridRelationFields DetailKeyField="ticket_id" MasterKeyField="ticket_id" /> 
                </ParentTableRelation> 
                <Columns> 
                    <telerik:GridBoundColumn DataField="id" Visible="false" HeaderText="ID" ReadOnly="True" 
                        SortExpression="id" UniqueName="id"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="ticket_id" HeaderText="ticket_id" Visible="False" 
                        ReadOnly="True" SortExpression="ticket_id" UniqueName="ticket_id"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="tdate" HeaderText="Date" UniqueName="tdate"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn DataField="message" HeaderText="Message" UniqueName="message"
                    </telerik:GridBoundColumn> 
                </Columns> 
                 <DetailTables> 
                 
                    <telerik:GridTableView DataSourceID="SqlDataSource3" Width="100%" DataKeyNames="ticketChildID" Name="ThirdTable" 
                        runat="server"  AutoGenerateColumns="False" CommandItemDisplay="Top" oninsertcommand="RadGrid1_InsertCommands"
                        <ParentTableRelation> 
                            <telerik:GridRelationFields DetailKeyField="id" MasterKeyField="ticket_id" /> 
                        </ParentTableRelation> 
                        <EditFormSettings EditFormType="Template" > 
                           
                            <FormTemplate> 
         
                                    <telerik:RadUpload ID="radup1" runat="server" AllowedFileExtensions=".zip,.jpg,.jpeg" /> 
                                    </telerik:RadUpload> 
                                    <asp:Button ID="b1" runat="server"  Text="Upload" CommandName="InsertForm" /> 
                      
                            </FormTemplate> 
                            <PopUpSettings ScrollBars="None" /> 
                        </EditFormSettings> 
                       <Columns> 
                        <telerik:GridBoundColumn DataField="filetitle" HeaderText="Attachment" UniqueName=" filetitle"
                    </telerik:GridBoundColumn> 
                       </Columns> 
                    </telerik:GridTableView> 
                </DetailTables> 
            </telerik:GridTableView> 
        </DetailTables> 
    </MasterTableView> 
</telerik:RadGrid> 
protected void RadGrid1_PreRender(object sender, EventArgs e) 
    { 
            for (int i = 0; i < RadGrid1.MasterTableView.Items.Count; i++) 
            { 
                RadGrid1.MasterTableView.Items[i].Expanded = true
            } 
          
        
    } 

It only expand the first Detail Table. how do i expand all child detail table?

4 Answers, 1 is accepted

Sort by
0
Schlurk
Top achievements
Rank 2
answered on 05 Mar 2010, 02:55 PM
This works for me:

C#:
    protected void RadGrid1_PreRender(object sender, EventArgs e) 
    { 
        HideExpandColumnRecursive(RadGrid1.MasterTableView); 
    } 
 
    public void HideExpandColumnRecursive(GridTableView tableView) 
    { 
        GridItem[] nestedViewItems = tableView.GetItems(GridItemType.NestedView); 
        foreach (GridNestedViewItem nestedViewItem in nestedViewItems) 
        { 
            foreach (GridTableView nestedView in nestedViewItem.NestedTableViews) 
            { 
                if (nestedView.Items.Count == 0) 
                { 
                    nestedView.ParentItem.Expanded = false
                } 
 
                else 
                { 
                    nestedView.ParentItem.Expanded = true
                } 
                HideExpandColumnRecursive(nestedView); 
            } 
        } 
    } 

Keep in mind that the HierarchyLoadMode property of each of your GridTableViews (including the MasterTableView) should be set to ServerBind.
0
DragonBall
Top achievements
Rank 1
answered on 05 Mar 2010, 03:36 PM
Thanks for the quick response. The detail table expand but the the low level detail table isnot binding.
0
DragonBall
Top achievements
Rank 1
answered on 05 Mar 2010, 04:39 PM
<asp:SqlDataSource ID="SqlDataSource3" ConnectionString="<%$ ConnectionStrings:SQLConnectionString %>" 
    SelectCommand="select filelocation, filetitle, ticketChildID from  nsc_attachments  a  
            join  nsc_child tc 
            on tc.id = a.ticketChildID 
            where tc.id  = @id 
            order by a.id asc" runat="server"
    <SelectParameters> 
        
        <asp:SessionParameter Name="id" SessionField="ProductCategoryName" Type="Object" /> 
    </SelectParameters> 
</asp:SqlDataSource > 
 protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) 
    { 
 
 
        
        if (e.CommandName == "ExpandCollapse") 
        { 
            GridDataItem item = (GridDataItem)e.Item; 
           
            try 
            { 
 
                string strkey = item.GetDataKeyValue("ticket_id").ToString(); 
                string strid = item.GetDataKeyValue("id").ToString(); 
 
                Label1.Text = strid
                Session["ProductCategoryName"] = Int64.Parse(strid); 
                 
            } 
 
            catch { }; 
        } 
 

It wont bind on initial because  i need the session parameter to query the sqldatasource and it needs to be click to get item_command.
to bind to the detail table.
How do i get the session without clicking the detail table
0
Schlurk
Top achievements
Rank 2
answered on 05 Mar 2010, 07:28 PM
I'm not completely sure if this would help or not, but if you set the HierarchyLoadMode (as I mentioned in my last post) to ServerBind and load the data that way all of your data should already be bound to the RadGrid therefore you do not need a click to have the data bound to the child GridTableView.
Tags
Grid
Asked by
DragonBall
Top achievements
Rank 1
Answers by
Schlurk
Top achievements
Rank 2
DragonBall
Top achievements
Rank 1
Share this question
or