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

Radgrid loosing data on GridEditCommandColumn

1 Answer 34 Views
Grid
This is a migrated thread and some comments may be shown as answers.
johncloud
Top achievements
Rank 1
johncloud asked on 07 Oct 2014, 06:21 AM
Im very new at using Telerik so pleas bare with me.

ive been trying to follow this
http://demos.telerik.com/aspnet-ajax/grid/examples/data-editing/edit-form-types/defaultcs.aspx
Here's my problem, im using EditForms as Editmode of my Radgrid but the difference is that my radgrid has a child grid
but everytime I click on edit button on the child grid the child grid becomes missing, and will only show up again when I retract and expand again the parent grid, only then the editform together with the child rid is shown, but still the details of the child grid is gone, please see the attached image for a better picture of whats happening.

ASPX
<telerik:RadGrid ID="rgParent" OnNeedDataSource="rgParent_NeedDataSource"
02.                                OnItemCommand="rgParent_ItemCommand" OnItemDataBound="rgParent_ItemDataBound"
03.                                OnItemCreated="rgParent" runat="server" PageSize="20" AllowSorting="True"
04.                                AllowMultiRowSelection="True" AllowPaging="True" AutoGenerateColumns="False"
05.                                GridLines="none" ShowStatusBar="true" EnableViewState="true"
06.                                Width="1183px" ClientIDMode = "Static" >
07.                                <GroupingSettings  ShowUnGroupButton="True"/>
08.                                <MasterTableView AllowMultiColumnSorting="True" DataKeyNames="DataSource"
09.                                    Width="100%">
10.                                     <Columns>
11.                                        <telerik:GridBoundColumn DataField="Column1"
12.                                            FilterControlAltText="Column1" HeaderButtonType="Column1"
13.                                            HeaderText="Column1" SortExpression="Column1" UniqueName="Column1"
14.                                            Visible="False">
15.                                            <HeaderStyle VerticalAlign="Top" />
16.                                        </telerik:GridBoundColumn>
17.                                        <telerik:GridBoundColumn DataField="Column2"
18.                                            FilterControlAltText="Column2"
19.                                            HeaderButtonType="Column2" HeaderText="Column2" SortExpression="Column2"
20.                                            UniqueName="Column2">
21.                                        </telerik:GridBoundColumn>
22.                                    </Columns>
23.                                    <NestedViewTemplate>
24.                                        <asp:Panel ID="pnlChild" runat="server" CssClass="viewWrap"
25.                                            Visible="true">
26.                                            <telerik:RadGrid ID="rgChild" runat="server"
27.                                                AllowMultiRowSelection="true" AllowPaging="True" AllowSorting="True"
28.                                                AutoGenerateColumns="False" EnableViewState="true" GridLines="None"
29.                                                OnItemCommand="rgChild_ItemCommand"
30.                                                OnItemCreated="rgChild_ItemCreated"
31.                                                OnItemDataBound="rgChild_ItemDataBound"
32.                                                OnNeedDataSource="rgChild_NeedDataSource" PageSize="7"
33.                                                ShowStatusBar="true" Width="95%">
34.                                                <MasterTableView AllowMultiColumnSorting="True" DataKeyNames="Column1"
35.                                                     EnableViewState="true" HierarchyLoadMode="ServerOnDemand"
36.                                                    Width="100%" EditMode="EditForms">
37.                                                    <Columns>
38.                                                        <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
39.                                                        </telerik:GridEditCommandColumn>
40.                                                        
41.                                                           <COLUMNS GOES HERE>
42.
43.                                                    </Columns>
44.                                                    <EditFormSettings EditFormType="Template">
45.                                                        <FormTemplate>
46.                                                            <table border="0" cellpadding="1" cellspacing="2" rules="none"
47.                                                                style="border-collapse: collapse;" width="100%">
48.                                                                <tr>
49.                                                                    <td>
50.                                                                        <table border="0" cellpadding="1" cellspacing="1" class="module"
51.                                                                            width="250">
52.                                                                            <tr>
53.                                                                                <td>
54.                                                                                </td>
55.                                                                                <td>
56.                                                                                </td>
57.                                                                            </tr>
58.                                                                            <tr>
59.                                                                                <td>
60.                                                                                    Note:
61.                                                                                </td>
62.                                                                                <td>
63.                                                                                    "A TEXT BOX HERE"
64.                                                                                </td>
65.                                                                            </tr>
66.                                                                            <tr>
67.                                                                                <td>
68.                                                                                    Process:
69.                                                                                </td>
70.                                                                                <td>
71.                                                                                  A TEXT BOX HERE
72.                                                                                </td>
73.                                                                            </tr>
74.                                                                        </table>
75.                                                                    </td>
76.                                                                </tr>
77.                                                                <tr>
78.                                                                    <td align="right" colspan="2">
79.                                                                        BUTTON
80.                                                                         
81.                                                                        ANOTHER BUTTON
82.                                                                    </td>
83.                                                                </tr>
84.                                                            </table>
85.                                                        </FormTemplate>
86.                                                    </EditFormSettings>
87.                                                </MasterTableView>
88.                                            </telerik:RadGrid>
89.                                        </asp:Panel>
90.                                    </NestedViewTemplate>
91.                                </MasterTableView>
92.                            </telerik:RadGrid>


C#
protected void rgViewBPAYParent_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            try
            {
               <Some codes here>
                rgViewBPAYParent.DataSource = ds.Tables[0];
                 
                 
            }
            catch (Exception ex)
            {
                
            }
 
 protected void rgParent_ItemCreated(object sender, GridItemEventArgs e)
        {
 
            try
            {
 
                if (e.Item is GridNestedViewItem)
                {
                   some codes here
 
               
                    if (gridID != null)
                    {
                        RadGrid grid = (RadGrid)e.Item.FindControl("rgChild");
                        grid.Visible = true;
                        grid.DataSource = null;
                        grid.Rebind();
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
 
            return;
 
        }
 
 
 
 protected void rgViewBPAYNested_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
             try
            {
 
                   
               if(!IsPostBack)
                 {
 
                    <some codes here>
 
                    dataSet = List.GetBySearch();
 
                    innerGrid.DataSource = dataSet.Tables[1];
                }
            }
             catch (Exception ex)
             {
                 
             }
        }


pardon me, I hope everything you need are provided for my problem, let me know if you have a question.. thanks in advance to whoever tries to help me. 

1 Answer, 1 is accepted

Sort by
0
Konstantin Dikov
Telerik team
answered on 09 Oct 2014, 03:26 PM
Hi,

I have examined your current implementation, but the correct way for binding your child grid within the NestedViewTemplate would be to handle the OnNeedDataSource event. You should have in mind that in order to populate the nested grid by handling the OnNeedDataSource event you will have to call the Rebind method once the parent item is expanding.

For your convenience, please take a look at the following simple example and see how the parent and the child grids are bound:
<telerik:RadGrid runat="server" ID="RadGrid1" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemCommand="RadGrid1_ItemCommand">
    <MasterTableView>
        <NestedViewTemplate>
            <telerik:RadGrid runat="server" ID="RadGrid2" OnNeedDataSource="RadGrid2_NeedDataSource">      
                <MasterTableView>
                    <Columns>
                        <telerik:GridEditCommandColumn></telerik:GridEditCommandColumn>
                    </Columns>
                </MasterTableView>         
            </telerik:RadGrid>
        </NestedViewTemplate>
    </MasterTableView>
</telerik:RadGrid>

And the code-behind:
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    DataTable table = new DataTable();
    table.Columns.Add("ID", typeof(int));
    table.Columns.Add("FirstName", typeof(string));
    for (int i = 0; i < 5; i++)
    {
        table.Rows.Add(i, "FirstName" + i);
    }
 
    (sender as RadGrid).DataSource = table;
}
 
protected void RadGrid2_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    RadGrid nestedGrid = sender as RadGrid;
    GridDataItem parentItem = (nestedGrid.NamingContainer as GridNestedViewItem).ParentItem;
 
    //retrieve some value from the parent item
    string itemID = parentItem["ID"].Text;
 
    DataTable table = new DataTable();
    table.Columns.Add("Field1", typeof(string));
    table.Columns.Add("Field2", typeof(string));
    for (int i = 0; i < 5; i++)
    {
        table.Rows.Add("field1" + itemID, "field1" + itemID);
    }
 
    (sender as RadGrid).DataSource = table;
}
 
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
    if (e.CommandName == RadGrid.ExpandCollapseCommandName)
    {
        if (!(e.Item as GridDataItem).Expanded)
        {
            ((e.Item as GridDataItem).ChildItem.FindControl("RadGrid2") as RadGrid).Rebind();
        }
    }
}

Hope this helps.


Regards,
Konstantin Dikov
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
johncloud
Top achievements
Rank 1
Answers by
Konstantin Dikov
Telerik team
Share this question
or