Sterlin Swan
Top achievements
Rank 1
Sterlin Swan
asked on 31 May 2012, 05:52 PM
Hi,
I have a grid which contains a nested grid. When the page loads I expand all the items by using <MasterTableView HierarchyDefaultExpanded="true"
When clicking the edit link on the parent grid all of the child grids vanish but the grid is still in an expanded state for all records. The only way to get the child grids back is to click the Expand/Collapse on one row, then they all appear again.
What I would like to achieve is to be able to edit a parent record and keep all child grids visible for the other records. Thanks for your help.
I have a grid which contains a nested grid. When the page loads I expand all the items by using <MasterTableView HierarchyDefaultExpanded="true"
When clicking the edit link on the parent grid all of the child grids vanish but the grid is still in an expanded state for all records. The only way to get the child grids back is to click the Expand/Collapse on one row, then they all appear again.
What I would like to achieve is to be able to edit a parent record and keep all child grids visible for the other records. Thanks for your help.
4 Answers, 1 is accepted
0
Jayesh Goyani
Top achievements
Rank 2
answered on 31 May 2012, 06:54 PM
Hello,
I am not able to reproduce the issue, Please check below code snippet.
Thanks,
Jayesh Goyani
I am not able to reproduce the issue, Please check below code snippet.
<telerik:RadGrid ID="RadGrid1" runat="server" GridLines="None" AutoGenerateColumns="false" AllowPaging="true" OnNeedDataSource="RadGrid1_NeedDataSource" OnDetailTableDataBind="RadGrid1_DetailTableDataBind"> <MasterTableView DataKeyNames="ID" HierarchyDefaultExpanded="true" HierarchyLoadMode="Client"> <Columns> <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> </Columns> <DetailTables> <telerik:GridTableView> <Columns> <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="ID"> </telerik:GridBoundColumn> <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn> </Columns> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid>protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid1.DataSource = (DataTable)Session["mydata"]; } protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e) { e.DetailTableView.DataSource = (DataTable)Session["mydata"]; }protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(System.Int32)); dt.Columns.Add("Name", typeof(System.String)); dt.Rows.Add(1, "name1"); dt.Rows.Add(2, "name2"); dt.Rows.Add(3, "name3"); Session["mydata"] = dt; } }Thanks,
Jayesh Goyani
0
Sterlin Swan
Top achievements
Rank 1
answered on 31 May 2012, 07:43 PM
I will have a look at your code, thanks. Here is what I had:
<telerik:RadGrid ID="RadGrid2" runat="server" GridLines="None" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" PageSize="6" CellPadding="2"> <MasterTableView HierarchyDefaultExpanded="True" DataKeyNames="TopLevelID"> <NestedViewTemplate> <asp:Panel ID="InnerContainer" runat="server"> <asp:Label runat="server" Text="test"></asp:Label> <telerik:RadGrid ID="RadGrid3" runat="server" AutoGenerateColumns="false"> <MasterTableView ShowHeader="false"> <Columns> <telerik:GridTemplateColumn UniqueName="VInfo" InitializeTemplatesFirst="false"> <ItemTemplate> <table cellpadding="2" cellspacing="0"> <tr> <td> <table> <tr> <td> Type:</td> <td> <%# Eval("Type")%> </td> </tr> </table> </td> </tr> <tr> <td> <table> <tr> <td> First Name:</td> <td> <%# Eval("Name")%> </td> <td> Last Name:</td> <td colspan="3"> <%# Eval("LastName")%> </td> </tr> </table> </td> </tr> <tr> <td> <table> <tr> <td> Comments:</td> <td> <%# Eval("Comments")%> </td> </tr> </table> </td> </tr> </table> </ItemTemplate> <EditItemTemplate> <table cellpadding="2" cellspacing="0"> <tr> <td> <table> <tr> <td> Comments:</td> <td> <asp:TextBox ID="txtComments" Rows="3" TextMode="MultiLine" runat="server" Text='<%# Eval("Comments") %>' Width="500px"></asp:TextBox> </td> </tr> </table> </td> </tr> </table> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn1" /> </Columns> </MasterTableView> </telerik:RadGrid> </asp:Panel> </NestedViewTemplate> <Columns> <telerik:GridBoundColumn DataField="TopLevelID" UniqueName="TopLevelID" HeaderText="TopLevelViolationID" ReadOnly="True"> <HeaderStyle Width="100px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Account" UniqueName="Account" HeaderText="Account" ReadOnly="True"> <HeaderStyle Width="100px" /> </telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="Notes" HeaderText="Notes" InitializeTemplatesFirst="false"> <HeaderStyle Width="700px" /> <ItemTemplate> <asp:Label ID="lblNotes" runat="server" Text=<%# Eval("Notes")%>></asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="txtNotes" runat="server" Text=<%# Eval("Notes")%> Rows=3 TextMode="MultiLine" Width="500"></asp:TextBox> </EditItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn> </telerik:GridEditCommandColumn> </Columns> <ExpandCollapseColumn Visible="True"> </ExpandCollapseColumn> </MasterTableView> <GroupingSettings CaseSensitive="False" /> </telerik:RadGrid>
Private Sub RadGrid2_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid2.ItemCreated If TypeOf e.Item Is GridNestedViewItem Then e.Item.FindControl("InnerContainer").Visible = (DirectCast(e.Item, GridNestedViewItem)).ParentItem.Expanded Dim RadGrid3 As Telerik.Web.UI.RadGrid = DirectCast(e.Item.FindControl("RadGrid3"), RadGrid) AddHandler RadGrid3.NeedDataSource, AddressOf Me.RadGrid3_NeedDataSource AddHandler RadGrid3.ItemCommand, AddressOf Me.RadGrid3_ItemCommand End If End Sub Private Sub RadGrid2_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid2.ItemCommand If e.CommandName = RadGrid.ExpandCollapseCommandName And TypeOf e.Item Is GridDataItem Then DirectCast(e.Item, GridDataItem).ChildItem.FindControl("InnerContainer").Visible = Not e.Item.Expanded Dim item As GridDataItem = TryCast(e.Item, GridDataItem) If e.Item.Expanded = False Then Dim nestedItem As GridNestedViewItem = DirectCast(item.ChildItem, GridNestedViewItem) Dim RadGrid3 As Telerik.Web.UI.RadGrid = DirectCast(nestedItem.FindControl("RadGrid3"), RadGrid) RadGrid3.Rebind() End If End If End Sub Private Sub RadGrid2_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles RadGrid2.NeedDataSource GetTopLevelViolations() End Sub Private Sub GetTopLevelViolations() RadGrid2.DataSource = TopLevelBL.GetTopLevel End Sub Private Sub RadGrid3_NeedDataSource(ByVal source As Object, ByVal e As GridNeedDataSourceEventArgs) Dim nestedItem As GridNestedViewItem = DirectCast(TryCast(source, RadGrid).NamingContainer, GridNestedViewItem) Dim dataKeyValue As Object = nestedItem.ParentItem.GetDataKeyValue("TopLevelID") Dim RadGrid3 = DirectCast(source, RadGrid) RadGrid3.DataSource = VBL.GetData(dataKeyValue) End Sub0
Accepted
Jayesh Goyani
Top achievements
Rank 2
answered on 31 May 2012, 08:11 PM
Hello,
please check below code snippet.
Let me know if any concern.
Thanks,
Jayesh Goyani
please check below code snippet.
<telerik:RadGrid ID="RadGrid2" runat="server" GridLines="None" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" PageSize="6" CellPadding="2" OnNeedDataSource="RadGrid2_NeedDataSource" AllowMultiRowEdit="true"> <MasterTableView HierarchyDefaultExpanded="True" DataKeyNames="ID"> <NestedViewTemplate> <asp:Panel ID="InnerContainer" runat="server"> <asp:Label ID="Label1" runat="server" Text="test"></asp:Label> <telerik:RadGrid ID="RadGrid3" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid3_NeedDataSource"> <MasterTableView ShowHeader="false"> <Columns> <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn> <ItemTemplate> child </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn1" /> </Columns> </MasterTableView> </telerik:RadGrid> </asp:Panel> </NestedViewTemplate> <Columns> <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn> <ItemTemplate> parent </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridEditCommandColumn> </telerik:GridEditCommandColumn> </Columns> <ExpandCollapseColumn Visible="True"> </ExpandCollapseColumn> </MasterTableView> <GroupingSettings CaseSensitive="False" /> </telerik:RadGrid>Protected Sub RadGrid2_NeedDataSource(sender As Object, e As GridNeedDataSourceEventArgs) Dim data As dynamic = New () {New With { _ .ID = 1, _ .Name = "name1" _ }, New With { _ .ID = 2, _ .Name = "name2" _ }, New With { _ .ID = 3, _ .Name = "name3" _ }, New With { _ .ID = 4, _ .Name = "Name4" _ }, New With { _ .ID = 5, _ .Name = "name5" _ }} RadGrid2.DataSource = dataEnd SubProtected Sub RadGrid3_NeedDataSource(sender As Object, e As GridNeedDataSourceEventArgs) Dim RadGrid3 As RadGrid = TryCast(sender, RadGrid) Dim strID As String = TryCast(RadGrid3.NamingContainer, GridNestedViewItem).ParentItem.GetDataKeyValue("ID").ToString() Dim data As dynamic = New () {New With { _ .ID = 1, _ .Name = "name_" + strID _ }, New With { _ .ID = 2, _ .Name = "name_" + strID _ }, New With { _ .ID = 3, _ .Name = "name_" + strID _ }, New With { _ .ID = 4, _ .Name = "Name_" + strID _ }, New With { _ .ID = 5, _ .Name = "name_" + strID _ }} RadGrid3.DataSource = dataEnd SubLet me know if any concern.
Thanks,
Jayesh Goyani
0
Sterlin Swan
Top achievements
Rank 1
answered on 31 May 2012, 09:00 PM
Thank you Jayesh. Simply putting OnNeedDataSource="RadGrid2_NeedDataSource" and OnNeedDataSource="RadGrid3_NeedDataSource"
in the grid declaration in the aspx page solvd the problem.