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

[Solved] Put DetailTables in edit mode

1 Answer 233 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Michael Doxzen
Top achievements
Rank 1
Michael Doxzen asked on 18 Mar 2014, 12:12 AM
My requirement is that when the user clicks the edit command on the parent row, all rows in the child table should be put into edit mode. I tried the following in the grid's itemcommand event, but it didn't work:

                   Dim dataitem As GridDataItem = DirectCast(e.CommandSource, GridDataItem)
                   For Each editItem As GridDataItem In dataitem.ChildItem.NestedTableViews(0).Items
                        editItem.Edit = True
                   Next

1 Answer, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 18 Mar 2014, 06:06 AM
Hello,

Please try with the below code snippet.

<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
               AllowFilteringByColumn="true" AllowPaging="true" PageSize="10" OnItemDataBound="RadGrid1_ItemDataBound" OnPreRender="RadGrid1_PreRender" OnDetailTableDataBind="RadGrid1_DetailTableDataBind"
               AllowMultiRowEdit="true">
               <PagerStyle AlwaysVisible="true" />
               <MasterTableView DataKeyNames="ID" ClientDataKeyNames="ID" HierarchyLoadMode="Client" >
                   <Columns>
                       <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                       </telerik:GridBoundColumn>
                       <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                       </telerik:GridBoundColumn>
                       <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn>
                   </Columns>
                   <DetailTables>
                       <telerik:GridTableView>
                           <Columns>
                               <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                               </telerik:GridBoundColumn>
                               <telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
                               </telerik:GridBoundColumn>
                               <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn>
                           </Columns>
                       </telerik:GridTableView>
                   </DetailTables>
               </MasterTableView>
           </telerik:RadGrid>

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        List<Employee> list = new List<Employee>();
        list.Add(new Employee() { ID = 1, Name = "Name1" });
        list.Add(new Employee() { ID = 2, Name = "Name2" });
        list.Add(new Employee() { ID = 3, Name = "Name3" });
        list.Add(new Employee() { ID = 4, Name = "Name4" });
        list.Add(new Employee() { ID = 5, Name = "Name5" });
        RadGrid1.DataSource = list;
    }
 
 
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
 
    }
 
 
 
 
 
    protected void RadGrid1_PreRender(object sender, EventArgs e)
    {
        for (int i = 0; i < RadGrid1.MasterTableView.Items.Count; i++)
        {
            GridDataItem item = RadGrid1.MasterTableView.Items[i];
 
            if (item.Edit)
            {
                foreach (GridDataItem citem in item.ChildItem.NestedTableViews[0].Items)
                {
                    citem.Edit = true;
                }
 
                item.ChildItem.NestedTableViews[0].Rebind();
            }
        }
 
 
    }
 
    protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
    {
        List<Employee> list = new List<Employee>();
        list.Add(new Employee() { ID = 11, Name = "Name1" });
        list.Add(new Employee() { ID = 22, Name = "Name2" });
        list.Add(new Employee() { ID = 33, Name = "Name3" });
        list.Add(new Employee() { ID = 44, Name = "Name4" });
        list.Add(new Employee() { ID = 55, Name = "Name5" });
        e.DetailTableView.DataSource = list;
    }

[Serializable]
public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}


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