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

Copy data from parent level to child level

4 Answers 137 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Noraset
Top achievements
Rank 1
Noraset asked on 04 Apr 2012, 11:38 AM
How to copy data from parent level to child level (see in attached file). For example, If I need to edit price of all rooms on the 1st floor according to 1st floor price. Firstly, I need to change the price from 200 to 210 of 1st floor price. Then I do not need to edit row by row at child level. Does telerik provide a function to copy price from 1st floor price to all rooms price on the 1st floor? or I have to program with another technic?

4 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 04 Apr 2012, 12:09 PM
Hello Noraset,

you want this functionality on client side or server side ?

Thanks,
Jayesh Goyani
0
Noraset
Top achievements
Rank 1
answered on 06 Apr 2012, 02:18 AM
Thanks Jayesh Goyani.

    It seems you imply me that it can be done both ways, But, I prefer client side. If it can be done both, which one are harder?
0
Jayesh Goyani
Top achievements
Rank 2
answered on 06 Apr 2012, 10:07 AM
Hello Noraset,

Client Side:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="forumpage.aspx.cs" Inherits="forumpage" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"></script>
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function ValueChanged(obj, args) {
                var txtparent = obj.get_id();
                var newvalue = args.get_newValue();
 
                var grid = $find("<%=RadGrid1.ClientID %>");
                if (grid) {
 
                    var MasterTable = grid.get_masterTableView();
                    var Rows = MasterTable.get_dataItems();
                    for (var i = 0; i < Rows.length; i++) {
 
                        var row = Rows[i];
// if you get any error then check is row is expaned or not
//  if (row._expanded)
                        if (row.findControl("txtparent").get_id() == obj.get_id()) {
 
                            for (var j = 0; j < row.get_nestedViews()[0].get_dataItems().length; j++) {
                                var childrow = row.get_nestedViews()[0].get_dataItems()[j];
                                childrow.findControl("txtchild").set_value(newvalue);
                                // if you not the control by using findcontrol then used Jquery
                            }
                        }
 
                    }
 
                }
 
            }
        </script>
    </telerik:RadCodeBlock>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
            OnDetailTableDataBind="RadGrid1_DetailTableDataBind">
            <MasterTableView DataKeyNames="ID" ClientDataKeyNames="ID" Name="parent" HierarchyLoadMode="Client">
                <Columns>
                    <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                    </telerik:GridBoundColumn>
                    <telerik:GridTemplateColumn DataField="NO" UniqueName="NO" HeaderText="NO">
                        <ItemTemplate>
                            <telerik:RadNumericTextBox ID="txtparent" runat="server">
                                <ClientEvents OnValueChanged="ValueChanged" />
                            </telerik:RadNumericTextBox>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
                <DetailTables>
                    <telerik:GridTableView Name="child">
                        <Columns>
                            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn DataField="NO" UniqueName="NO" HeaderText="NO">
                                <ItemTemplate>
                                    <telerik:RadNumericTextBox ID="txtchild" runat="server">
                                    </telerik:RadNumericTextBox>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                        </Columns>
                    </telerik:GridTableView>
                </DetailTables>
            </MasterTableView>
        </telerik:RadGrid>
    </div>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
public partial class forumpage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
 
        DateTime dt = new DateTime();
 
        dynamic data = new[] {
                new { ID = 1, Name ="Name1", customdate=dt,NO = 1},
                new { ID = 2, Name = "Name2", customdate=dt,NO = 1},
                new { ID = 3, Name = "Name3", customdate=dt,NO = 1},
                new { ID = 4, Name = "Name4", customdate=dt,NO = 1},
                new { ID = 5, Name = "Name5", customdate=dt,NO = 1}
            };
 
        RadGrid1.DataSource = data;
    }
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
    }
    
    protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
    {  
    }
    protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
    {
        DateTime dt = new DateTime();
 
        dynamic data = new[] {
                new { ID = 11, Name ="Name1", customdate=dt,NO = 1},
                new { ID = 22, Name = "Name2", customdate=dt,NO = 1},
                new { ID = 33, Name = "Name3", customdate=dt,NO = 1},
                new { ID = 44, Name = "Name4", customdate=dt,NO = 1},
                new { ID = 55, Name = "Name5", customdate=dt,NO = 1}
            };
 
        e.DetailTableView.DataSource = data;
    }
}


Thanks,
Jayesh Goyani
0
Jayesh Goyani
Top achievements
Rank 2
answered on 06 Apr 2012, 10:17 AM
Hello Noraset,

Client side is harder.

Server Side:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="forumpage.aspx.cs" Inherits="forumpage" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"
            OnDetailTableDataBind="RadGrid1_DetailTableDataBind">
            <MasterTableView DataKeyNames="ID" ClientDataKeyNames="ID" Name="parent" HierarchyLoadMode="Client">
                <Columns>
                    <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                    </telerik:GridBoundColumn>
                    <telerik:GridTemplateColumn DataField="NO" UniqueName="NO" HeaderText="NO">
                        <ItemTemplate>
                            <telerik:RadNumericTextBox ID="txtparent" runat="server" AutoPostBack="true" OnTextChanged="txtparent_TextChanged">
                            </telerik:RadNumericTextBox>
                        </ItemTemplate>
                    </telerik:GridTemplateColumn>
                </Columns>
                <DetailTables>
                    <telerik:GridTableView Name="child">
                        <Columns>
                            <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
                            </telerik:GridBoundColumn>
                            <telerik:GridTemplateColumn DataField="NO" UniqueName="NO" HeaderText="NO">
                                <ItemTemplate>
                                    <telerik:RadNumericTextBox ID="txtchild" runat="server">
                                    </telerik:RadNumericTextBox>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                        </Columns>
                    </telerik:GridTableView>
                </DetailTables>
            </MasterTableView>
        </telerik:RadGrid>
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
public partial class forumpage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
 
        DateTime dt = new DateTime();
 
        dynamic data = new[] {
                new { ID = 1, Name ="Name1", customdate=dt,NO = 1},
                new { ID = 2, Name = "Name2", customdate=dt,NO = 1},
                new { ID = 3, Name = "Name3", customdate=dt,NO = 1},
                new { ID = 4, Name = "Name4", customdate=dt,NO = 1},
                new { ID = 5, Name = "Name5", customdate=dt,NO = 1}
            };
 
        RadGrid1.DataSource = data;
    }
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
    }
    
    protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e)
    {  
    }
    protected void RadGrid1_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
    {
        DateTime dt = new DateTime();
 
        dynamic data = new[] {
                new { ID = 11, Name ="Name1", customdate=dt,NO = 1},
                new { ID = 22, Name = "Name2", customdate=dt,NO = 1},
                new { ID = 33, Name = "Name3", customdate=dt,NO = 1},
                new { ID = 44, Name = "Name4", customdate=dt,NO = 1},
                new { ID = 55, Name = "Name5", customdate=dt,NO = 1}
            };
 
        e.DetailTableView.DataSource = data;
    }
    protected void txtparent_TextChanged(object sender, EventArgs e)
    {
        RadNumericTextBox txtparent = sender as RadNumericTextBox;
        GridDataItem item =txtparent.NamingContainer as GridDataItem;
 
        if (item.HasChildItems)
        {
            foreach (GridDataItem citem in item.ChildItem.NestedTableViews[0].Items)
            {
                RadNumericTextBox txtchild = citem.FindControl("txtchild") as RadNumericTextBox;
                txtchild.Value = txtparent.Value;
            }
        }
 
    }
}



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