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

radgrid in hierarchy with edit update insert detail table disappear

1 Answer 409 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Şener
Top achievements
Rank 1
Şener asked on 12 Feb 2014, 04:31 PM
Hi,

We are using radgrid in hierarchy with edit update insert. We also use needdatasource and detailtablebind at server side.There is an issue when detailtable is in edit mode and after pressing cancel button detail table disappear (not only data also design, means no detailtable yet it is empty) in rows coming after edited row. Rows before edited row not effected surprisingly.

1 Answer, 1 is accepted

Sort by
0
Accepted
Princy
Top achievements
Rank 2
answered on 13 Feb 2014, 03:57 AM
Hi Şener,

Please try this sample code snippet to edit a hierarchy grid. If this doesn't help, provide your full code snippet.

ASPX:
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadGrid1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid1"></telerik:AjaxUpdatedControl>
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="RadGrid1" runat="server" ShowStatusBar="true" AutoGenerateColumns="False" RetainExpandStateOnRebind="true" PageSize="5" AllowSorting="True" AllowMultiRowSelection="true" AllowPaging="True" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" OnNeedDataSource="RadGrid1_NeedDataSource" OnUpdateCommand="RadGrid1_UpdateCommand">
    <MasterTableView DataKeyNames="CustomerID" Width="100%" CommandItemDisplay="Top"
        Name="Customers">
        <DetailTables>
            <telerik:GridTableView DataKeyNames="OrderID" Width="100%" runat="server" CommandItemDisplay="Top" Name="Orders">
                <ParentTableRelation>
                    <telerik:GridRelationFields DetailKeyField="CustomerID" MasterKeyField="CustomerID">
                    </telerik:GridRelationFields>
                </ParentTableRelation>
                <Columns>
                    <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn2">
                    </telerik:GridEditCommandColumn>
                    <telerik:GridBoundColumn SortExpression="OrderID" HeaderText="OrderID" HeaderButtonType="TextButton" DataField="OrderID" UniqueName="OrderID">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn SortExpression="ShipName" HeaderText="ShipName" HeaderButtonType="TextButton" DataField="ShipName" UniqueName="ShipName">
                    </telerik:GridBoundColumn>                 
                </Columns>
            </telerik:GridTableView>
        </DetailTables>
        <Columns>
            <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
            </telerik:GridEditCommandColumn>
            <telerik:GridBoundColumn SortExpression="CustomerID" HeaderText="CustomerID" HeaderButtonType="TextButton" DataField="CustomerID" UniqueName="CustomerID" MaxLength="5">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn SortExpression="ContactName" HeaderText="Contact Name" HeaderButtonType="TextButton" DataField="ContactName" UniqueName="ContactName">
            </telerik:GridBoundColumn>         
        </Columns>
    </MasterTableView>
    <ClientSettings Selecting-AllowRowSelect="true">
    </ClientSettings>
</telerik:RadGrid>

C#:
public static string connection = WebConfigurationManager.ConnectionStrings["Northwind_newConnectionString3"].ConnectionString;
SqlConnection conn = new SqlConnection(connection); 
 
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    if (!e.IsFromDetailTable)
    {
        RadGrid1.DataSource = GetDataTable("SELECT * FROM Customers");
    }
}
protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
    GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
    switch (e.DetailTableView.Name)
    {
        case "Orders":
            {
                string CustomerID = dataItem.GetDataKeyValue("CustomerID").ToString();
                e.DetailTableView.DataSource = GetDataTable("SELECT * FROM Orders WHERE CustomerID = '" + CustomerID + "'");
                break;
            }
    }
}
public DataTable GetDataTable(string query)
{      
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, conn);
    DataTable myDataTable = new DataTable();
 
    conn.Open();
    try
    {
        adapter.Fill(myDataTable);
    }
    finally
    {
        conn.Close();
    }
 
    return myDataTable;
}
protected void RadGrid1_UpdateCommand(object sender, GridCommandEventArgs e)
{
    GridEditableItem edit = (GridEditableItem)e.Item;     
    try
    {
        if (e.Item.OwnerTableView.Name == "Customers")
        {
            string CustomerID = edit.GetDataKeyValue("CustomerID").ToString();
            TextBox txt = (TextBox)edit["ContactName"].Controls[0];
            conn.Open();
            string query = "UPDATE Customers SET ContactName ='" + txt.Text + "' WHERE CustomerID = '" + CustomerID + "'";
            SqlCommand cmd = new SqlCommand(query, conn);
            cmd.ExecuteNonQuery();
            conn.Close();
        }
        else if (e.Item.OwnerTableView.Name == "Orders")
        {
            string OrderID = edit.GetDataKeyValue("OrderID").ToString();
            TextBox txt = (TextBox)edit["ShipName"].Controls[0];
            conn.Open();
            string query = "UPDATE Orders SET ShipName ='" + txt.Text + "' WHERE OrderID = '" + OrderID + "'";
            SqlCommand cmd = new SqlCommand(query, conn);
            cmd.ExecuteNonQuery();
            conn.Close();
        }         
    }
    catch (Exception ex)
    {
        // Some code
    }
}

Thanks,
Princy
Tags
Grid
Asked by
Şener
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Share this question
or