如何在 DataTables 中创建和设置复选框
How to create and set checkbox in DataTables
我有一个 table,它加载了 AJAX 调用并使用 jQuery 的 DataTables 扩展呈现。这是我的代码:
$("#tblSelectedUserRoles").dataTable({
bProcessing: true,
sAjaxSource: '@Url.Action("GetAllRolesForUser")?' + "userId=" + $("#txtSelectedUserId").val(),
bJQueryUI: true,
sProcessing: "<img src='~/Images/spinner.gif' />",
dom: 'T<"clear">rtip',
bAutoWidth: false,
"aoColumns": [
{ "sWidth": "1%", sClass: "smallFonts" },
{ "sWidth": "20%", sClass: "smallFonts" },
{ "sWidth": "20%", sClass: "smallFonts" },
{
"sWidth": "20%", sClass: "smallFonts", "sName": "UserRoleId", "mRender": function (data, type, row) {
return "<input type='checkbox' onchange=defaultrole('" + row[0] + "'); >";
}},
{ "sWidth": "20%", sClass: "smallFonts" },
{
"sName": "UserRoleId", "sWidth": "20%", sClass: "smallFonts", "mRender": function (data, type, row) {
return "<button class='gridButton' onclick=deleterole('" + row[0] + "');>Delete Role</button>";
}}
]
});
我正在尝试在 table 中添加一个复选框。复选框出现,当我点击其中任何一个时,我使用正确的 user_role_id 调用该函数没有问题。我的问题是数据来自控制器中的这个:
[HttpGet]
public ActionResult GetAllRolesForUser(string userId)
{
List<UserRoleModel> userroles = DataRepository.GetSelectedUserRoles(userId);
return Json(new
{
aaData = userroles.Select(x => new String[] {
x.UserRoleId,
x.Role,
x.RoleDesc,
x.Default.ToString(),
x.UarApproved.ToString()})
}, JsonRequestBehavior.AllowGet);
}
默认值和批准值是布尔值,我必须将它们转换为字符串才能在 aaData 中传递。在任何情况下,none 的复选框至少应设置一个。你怎么做到这一点?
您需要实际设置 checked
状态。如果应该定义检查状态的值是 UarApproved
并且该值是一个字符串化的布尔值,总是 'true'
或 'false'
,那么这样做:
{
sWidth: "20%",
sClass: "smallFonts",
sName: "UserRoleId",
mRender: function(data, type, row) {
return '<input type="checkbox" checked="'+row[4]+'" onchange=defaultrole('+row[0]+');/>';
}
},
我有一个 table,它加载了 AJAX 调用并使用 jQuery 的 DataTables 扩展呈现。这是我的代码:
$("#tblSelectedUserRoles").dataTable({
bProcessing: true,
sAjaxSource: '@Url.Action("GetAllRolesForUser")?' + "userId=" + $("#txtSelectedUserId").val(),
bJQueryUI: true,
sProcessing: "<img src='~/Images/spinner.gif' />",
dom: 'T<"clear">rtip',
bAutoWidth: false,
"aoColumns": [
{ "sWidth": "1%", sClass: "smallFonts" },
{ "sWidth": "20%", sClass: "smallFonts" },
{ "sWidth": "20%", sClass: "smallFonts" },
{
"sWidth": "20%", sClass: "smallFonts", "sName": "UserRoleId", "mRender": function (data, type, row) {
return "<input type='checkbox' onchange=defaultrole('" + row[0] + "'); >";
}},
{ "sWidth": "20%", sClass: "smallFonts" },
{
"sName": "UserRoleId", "sWidth": "20%", sClass: "smallFonts", "mRender": function (data, type, row) {
return "<button class='gridButton' onclick=deleterole('" + row[0] + "');>Delete Role</button>";
}}
]
});
我正在尝试在 table 中添加一个复选框。复选框出现,当我点击其中任何一个时,我使用正确的 user_role_id 调用该函数没有问题。我的问题是数据来自控制器中的这个:
[HttpGet]
public ActionResult GetAllRolesForUser(string userId)
{
List<UserRoleModel> userroles = DataRepository.GetSelectedUserRoles(userId);
return Json(new
{
aaData = userroles.Select(x => new String[] {
x.UserRoleId,
x.Role,
x.RoleDesc,
x.Default.ToString(),
x.UarApproved.ToString()})
}, JsonRequestBehavior.AllowGet);
}
默认值和批准值是布尔值,我必须将它们转换为字符串才能在 aaData 中传递。在任何情况下,none 的复选框至少应设置一个。你怎么做到这一点?
您需要实际设置 checked
状态。如果应该定义检查状态的值是 UarApproved
并且该值是一个字符串化的布尔值,总是 'true'
或 'false'
,那么这样做:
{
sWidth: "20%",
sClass: "smallFonts",
sName: "UserRoleId",
mRender: function(data, type, row) {
return '<input type="checkbox" checked="'+row[4]+'" onchange=defaultrole('+row[0]+');/>';
}
},