Hi Telerik team,
I have a Hierarchical grid implemented as follows
I have two buttons above the grid two move items up and down. I was able to move up and down the rows inside the Master Grid. I need to achieve the same behavior in the Details Grid.
I need to know how to access:
- The selected element from the detail grid. In Master grid I got as follow: radGridMaster.SelectedItems[0]
- The parent row of the Detail grid in the Master grid.
- The DataSource of the Detail grid. In the Master grid is radGridMaster.DataSource
Thanks in advance,
L
I have a Hierarchical grid implemented as follows
<
telerik:RadGrid
ID
=
"radGridMaster"
runat
=
"server"
AutoGenerateColumns
=
"false"
OnDetailTableDataBind
=
"radGridMaster_OnDetailTableDataBind"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
Position
=
"TopAndBottom"
/>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"true"
UseClientSelectColumnOnly
=
"true"
/>
</
ClientSettings
>
<
MasterTableView
AutoGenerateColumns
=
"false"
DataKeyNames
=
"Name1"
Name
=
"Master"
>
<
DetailTables
>
<
telerik:GridTableView
Name
=
"Detail"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"SubName1"
SortExpression
=
"SubName1"
UniqueName
=
"SubName1"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"SubName2"
SortExpression
=
"SubName2"
UniqueName
=
"SubName2"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
telerik:GridTableView
>
</
DetailTables
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Name1"
SortExpression
=
"Name1"
UniqueName
=
"Name1"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name2"
SortExpression
=
"Name2"
UniqueName
=
"Name2"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
I need to know how to access:
- The selected element from the detail grid. In Master grid I got as follow: radGridMaster.SelectedItems[0]
- The parent row of the Detail grid in the Master grid.
- The DataSource of the Detail grid. In the Master grid is radGridMaster.DataSource
Thanks in advance,
L
7 Answers, 1 is accepted
0
Accepted

Jayesh Goyani
Top achievements
Rank 2
answered on 01 Sep 2012, 09:34 AM
Hello,
Please try with below code snippet.
Thanks,
Jayesh Goyani
Please try with below code snippet.
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"False"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
OnItemCreated
=
"RadGrid1_ItemCreated"
AllowMultiRowSelection
=
"true"
>
<
MasterTableView
Name
=
"Parent"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
UniqueName
=
"ID"
HeaderText
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderText
=
"Name"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
DetailTables
>
<
telerik:GridTableView
Name
=
"Child"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
UniqueName
=
"ID"
HeaderText
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderText
=
"Name"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
telerik:GridTableView
>
</
DetailTables
>
</
MasterTableView
>
<
ClientSettings
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
</
telerik:RadGrid
>
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text
=
"Button"
onclick
=
"Button1_Click"
/>
protected
void
Button1_Click(
object
sender, EventArgs e)
{
foreach
(GridDataItem item
in
RadGrid1.SelectedItems)
{
if
(item.OwnerTableView.Name ==
"Parent"
)
{
// Parent item
// Access current row column
string
strID = item[
"ID"
].Text;
}
else
if
(item.OwnerTableView.Name ==
"Child"
)
{
// Child item
// Access current row column
string
strID = item[
"ID"
].Text;
// Access Current row's parent
string
strPID = item.OwnerTableView.ParentItem[
"ID"
].Text;
}
}
}
Thanks,
Jayesh Goyani
0

L
Top achievements
Rank 1
answered on 03 Sep 2012, 07:43 PM
Thanks Jayesh, that was exactly what I was looking for.
I have another question, how to access to the datasources of the child table inside that Button_Click1 method that you put me as an example?
Thanks in advance.
I have another question, how to access to the datasources of the child table inside that Button_Click1 method that you put me as an example?
Thanks in advance.
0

Jayesh Goyani
Top achievements
Rank 2
answered on 04 Sep 2012, 05:28 AM
Hello,
Please try with below code snippet.
Thanks,
Jayesh Goyani
Please try with below code snippet.
protected
void
Button1_Click(
object
sender, EventArgs e)
{
Button btnChild = sender
as
Button;
GridDataItem item = btnChild.NamingContainer
as
GridDataItem;
string
strID = item[
"ID"
].Text;
// Access Current row's parent
string
strPID = item.OwnerTableView.ParentItem[
"ID"
].Text;
}
Thanks,
Jayesh Goyani
0

L
Top achievements
Rank 1
answered on 04 Sep 2012, 12:30 PM
Hi Jayesh,
Thanks for your quick answer but that was not what I was looking for.
I need to access to the datasource of the detail table inside the Button1_Click the same way I do in the OnDetailTabeDataBind event
Thanks in advance,
Thanks for your quick answer but that was not what I was looking for.
I need to access to the datasource of the detail table inside the Button1_Click the same way I do in the OnDetailTabeDataBind event
protected void Button1_Click(object sender, EventArgs e)
{
???.DetailTableView.DataSource = new List<
string
>();
}
Thanks in advance,
0

Jayesh Goyani
Top achievements
Rank 2
answered on 04 Sep 2012, 01:09 PM
Hello,
Let me know if any concern.
Thanks,
Jayesh Goyani
foreach
(GridDataItem item
in
RadGrid1.MasterTableView.Items)
{
// Access parent grid here
if
(item.HasChildItems)
{
foreach
(GridDataItem citem
in
item.ChildItem.NestedTableViews[0].Items)
{
item.ChildItem.NestedTableViews[0].DataSource =
null
;
}
}
}
Let me know if any concern.
Thanks,
Jayesh Goyani
0

L
Top achievements
Rank 1
answered on 04 Sep 2012, 01:15 PM
Hi Jayesh,
Your solution worked only for the first child table.
To put you an example,
Master Table looks like this
Row 1
Row 2
Row 3
If I expanded Row 1, it will look like
Row1
SubRow11
SubRow12
SubRow13
Based on your solution, I was able to bind only the FIRST child table, the one that contains SubRow11, SubRow12 and SubRow13 after I moved any of them up down. However,
If I expanded Row 2
Row2
SubRow21
SubRow22
SubRow23
and try to move the elements up and down, I'm not able to rebind that child table that contains SubRow21, SubRow22 and SubRow23 and all subsequents child table.
Any ideas?
Your solution worked only for the first child table.
To put you an example,
Master Table looks like this
Row 1
Row 2
Row 3
If I expanded Row 1, it will look like
Row1
SubRow11
SubRow12
SubRow13
Based on your solution, I was able to bind only the FIRST child table, the one that contains SubRow11, SubRow12 and SubRow13 after I moved any of them up down. However,
If I expanded Row 2
Row2
SubRow21
SubRow22
SubRow23
and try to move the elements up and down, I'm not able to rebind that child table that contains SubRow21, SubRow22 and SubRow23 and all subsequents child table.
Any ideas?
0

L
Top achievements
Rank 1
answered on 04 Sep 2012, 02:19 PM
Thanks Jayesh for your support, I have found the answer of the question I just asked you. Here it is for future references.
foreach (GridDataItem item in RadGrid1.SelectedItems)
{
if (item.OwnerTableView.Name == "Master")
{
RadGrid1.DataSource = new List<
string
>();
}
else
{
if (item.OwnerTableView.Name == "Child")
{
item.OwnerTableView.DataSource = new List<
string
>();
}
}