Kendo UI 网格的自定义 row/checkbox 模板
Custom row/checkbox template for Kendo UI grid
我正在尝试为包含复选框功能的 Kendo UI 网格创建自定义行模板。我创建了这样的网格:
@(Html.Kendo().Grid(Model.Users)
.Name("usersGrid")
.Columns(columns =>
{
columns.Select().Width(50);
columns.Bound(c => c.UserName);
})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false))
.ClientRowTemplate(UsersClientTemplate))
具有生成这样的行模板的功能:
Func<Grid<User>, string> UsersClientTemplate = (grid) =>
{
var id = Guid.NewGuid();
return @"<tr data-uid='#:uid#' role='row'>" +
"<td role='gridcell'>" +
$"<input class='k-checkbox' data-role='checkbox' type='checkbox' id={id}>" +
$"<label class='k-checkbox-label k-no-text' for={id}></label>" +
"</td>" +
"<td role='gridcell'>" +
"<a href='/users/details/#:data.Id#'>#:data.UserName#</a>" +
"</td>" +
"</tr>";
};
问题是我不知道如何为每一行的模板生成唯一的 ID。如果我不在复选框 input
元素上包含 id
属性,在复选框 label
元素上不包含 for
属性,则 checkbox/row 选择不会工作。但是使用上面的函数,为每个行模板生成相同的 id,然后 checkbox/row 选择仅适用于第一行,显然。
执行此操作的更好方法是什么?
模板是在构建网格时生成的,因此如您所见,id 始终相同。您想要的是数据绑定,因此 kendo 将 id 替换为每条记录。我将我的实体密钥与前缀 "cb_" 用于复选框:
$"<input class='k-checkbox' data-role='checkbox' type='checkbox' id='cb_#:uid#'>" +
$"<label class='k-checkbox-label k-no-text' for='cb_#:uid#'></label>" +
我正在尝试为包含复选框功能的 Kendo UI 网格创建自定义行模板。我创建了这样的网格:
@(Html.Kendo().Grid(Model.Users)
.Name("usersGrid")
.Columns(columns =>
{
columns.Select().Width(50);
columns.Bound(c => c.UserName);
})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false))
.ClientRowTemplate(UsersClientTemplate))
具有生成这样的行模板的功能:
Func<Grid<User>, string> UsersClientTemplate = (grid) =>
{
var id = Guid.NewGuid();
return @"<tr data-uid='#:uid#' role='row'>" +
"<td role='gridcell'>" +
$"<input class='k-checkbox' data-role='checkbox' type='checkbox' id={id}>" +
$"<label class='k-checkbox-label k-no-text' for={id}></label>" +
"</td>" +
"<td role='gridcell'>" +
"<a href='/users/details/#:data.Id#'>#:data.UserName#</a>" +
"</td>" +
"</tr>";
};
问题是我不知道如何为每一行的模板生成唯一的 ID。如果我不在复选框 input
元素上包含 id
属性,在复选框 label
元素上不包含 for
属性,则 checkbox/row 选择不会工作。但是使用上面的函数,为每个行模板生成相同的 id,然后 checkbox/row 选择仅适用于第一行,显然。
执行此操作的更好方法是什么?
模板是在构建网格时生成的,因此如您所见,id 始终相同。您想要的是数据绑定,因此 kendo 将 id 替换为每条记录。我将我的实体密钥与前缀 "cb_" 用于复选框:
$"<input class='k-checkbox' data-role='checkbox' type='checkbox' id='cb_#:uid#'>" +
$"<label class='k-checkbox-label k-no-text' for='cb_#:uid#'></label>" +