AUTHOR: Attila Antal
DATE POSTED: April 12, 2019
This article provides an example of how to check CheckBoxes in DetailTables of a Hierarchical RadGrid when Checking the CheckBox of a MasterTable item.
HTM Markup:
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
"server"
>
AjaxSettings
telerik:AjaxSetting
AjaxControlID
"RadGrid1"
UpdatedControls
telerik:AjaxUpdatedControl
ControlID
LoadingPanelID
"RadAjaxLoadingPanel1"
/>
</
telerik:RadAjaxLoadingPanel
Skin
"Default"
></
telerik:RadGrid
Width
"800px"
OnPreRender
"RadGrid1_PreRender"
OnNeedDataSource
"RadGrid1_NeedDataSource"
OnDetailTableDataBind
"RadGrid1_DetailTableDataBind"
MasterTableView
Name
"MasterTable"
AutoGenerateColumns
"true"
HierarchyLoadMode
"Client"
Columns
telerik:GridTemplateColumn
UniqueName
"TempalteColumn1"
HeaderText
"GridTemplateColumn"
HeaderStyle
"200px"
ItemTemplate
telerik:RadCheckBox
"RadCheckBox1"
Text
"Check on Client"
AutoPostBack
"false"
OnClientCheckedChanged
"OnClientCheckedChanged"
"TempalteColumn2"
"RadCheckBox2"
"Check on Server"
OnCheckedChanged
"RadCheckBox2_CheckedChanged"
DetailTables
telerik:GridTableView
"ChildTable"
ShowHeader
"TempalteColumn3"
"RadCheckBox3"
"Detail CheckBox"
JavaScript APIs to check the checkboxes on client-side.
<script type=
"text/javascript"
function
OnClientCheckedChanged(sender, args) {
// RadCheckBox element of MasterTable
var
masterCheckBox = sender.get_element();
// checkbox checked value
isChecked = args.get_checked();
// RadGrid element
gridElement = $(masterCheckBox).closest(
'.RadGrid'
)[0];
// verify that the element exists and it has a property called control
if
(gridElement && gridElement.control) {
// cast the grid element to RadGrid object
grid = gridElement.control;
// Instantiate a GridDataItem class by calling the get_dataItems() method of MasterTable.
grid.get_masterTableView().get_dataItems();
// get reference to the current Master row element
rowElement = $(masterCheckBox).closest(
'tr'
(rowElement && rowElement.control) {
// cast the row element to GridDataItem object
dataItem = rowElement.control;
// get reference to the DetailTable of this item
detailTable = dataItem.get_nestedViews()[0];
// get reference to DetailTable items collection
detailItems = detailTable.get_dataItems();
// loop through each item
for
(
i = 0; i < detailItems.length; i++) {
item = detailItems[i];
// find the RadCheckBox control
detailCheckBox = $telerik.findControl(item.get_cell(
),
);
// Check the checkbox based on the Checked value
detailCheckBox.set_checked(isChecked);
}
</script>
C# -Code behind
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = OrdersTable();
RadGrid1_DetailTableDataBind(
sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
e.DetailTableView.DataSource = OrdersTable();
private
DataTable OrdersTable()
DataTable dt =
new
DataTable();
dt.Columns.Add(
DataColumn(
"OrderID"
,
typeof
int
)));
"Freight"
decimal
"ShipName"
string
dt.PrimaryKey =
DataColumn[] { dt.Columns[
] };
i = 0; i < 5; i++)
index = i + 1;
DataRow row = dt.NewRow();
row[
] = index;
] = index * 0.1 + index * 0.01;
] =
"Name "
+ index;
dt.Rows.Add(row);
return
dt;
RadGrid1_PreRender(
sender, EventArgs e)
RadGrid1.MasterTableView.Items.OfType<GridDataItem>().First().Expanded =
true
;
RadCheckBox2_CheckedChanged(
// cast sender to RadCheckBox control
RadCheckBox masterCheckBox = (RadCheckBox)sender;
// get reference to the current MasterTable item
GridDataItem dataItem = masterCheckBox.NamingContainer
as
GridDataItem;
// check whether it has child items/detail tables
(dataItem.HasChildItems)
// reference the DetailTable
GridTableView detailTable = dataItem.ChildItem.NestedTableViews.First();
// llop through the detailtable items
foreach
(GridDataItem item
in
detailTable.Items)
// find the checkbox of the item
RadCheckBox detailCheckBox = item[
].FindControl(
)
RadCheckBox;
// check the checkbox based on the MasterCheckbox checked state
detailCheckBox.Checked = masterCheckBox.Checked;
VB - Code behind
Protected
Sub
ByVal
sender
As
Object
e
GridNeedDataSourceEventArgs)
RadGrid1.DataSource = OrdersTable()
End
Telerik.Web.UI.GridDetailTableDataBindEventArgs)
e.DetailTableView.DataSource = OrdersTable()
Private
Function
OrdersTable()
DataTable
Dim
dt
DataTable =
New
DataTable()
GetType
Integer
)))
Decimal
String
DataColumn() {dt.Columns(
)}
For
i
= 0
To
5 - 1
index
= i + 1
row
DataRow = dt.NewRow()
row(
) = index
) = index * 0.1 + index * 0.01
) =
& index
dt.Rows.Add(row)
Next
Return
EventArgs)
RadGrid1.MasterTableView.Items.OfType(Of GridDataItem)().First().Expanded =
True
masterCheckBox
RadCheckBox =
CType
(sender, RadCheckBox)
dataItem
GridDataItem = TryCast(masterCheckBox.NamingContainer, GridDataItem)
If
dataItem.HasChildItems
Then
detailTable
GridTableView = dataItem.ChildItem.NestedTableViews.First()
Each
item
GridDataItem
In
detailTable.Items
detailCheckBox
RadCheckBox = TryCast(item(
).FindControl(
), RadCheckBox)
detailCheckBox.Checked = masterCheckBox.Checked
Resources Buy Try