Javascript 如何在JQGRID中限制要在Header Select All事件上选择的特定行
使用jqGrid,我已通过以下事件禁用复选框列单击上的行选择:Javascript 如何在JQGRID中限制要在Header Select All事件上选择的特定行,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,使用jqGrid,我已通过以下事件禁用复选框列单击上的行选择: beforeSelectRow: function (rowid, e) { var $myGrid = $(this), i = $.jgrid.getCellIndex($(e.target).closest('td')[0]), cm = $myGrid.jqGrid('getGridParam', 'colModel'); var rowData = $grid.getRow
beforeSelectRow: function (rowid, e) {
var $myGrid = $(this),
i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),
cm = $myGrid.jqGrid('getGridParam', 'colModel');
var rowData = $grid.getRowData(rowid);
var $isSelectable = true;
if (rowData != null) {
if (rowData.Status == -1) // Row selection depends on 'Status' property row data ( -1 : not selectable else selectable)
$isSelectable = false;
}
return $isSelectable;
},
但当我尝试单击Header复选框时,它会选择所有行。我试图使用eventonSelectAll
,但它在行选择过程之后被调用,并且我无法找到在行选择更改之前调用的适当事件。请提出适当的解决方案
编辑:
网格的复选框可能有值(即选中/未选中),即使它被禁用
网格具有导航到另一页的超链接。实现您的需求的最简单方法是使用
rowattr
来禁用状态等于-1的行
使用4.10.0,所有行的选择结果如下图所示:
它使用以下rowattr
:
rowattr: function (rd) {
if (rd.closed) {
return {
"class": $(this).jqGrid("getGuiStyles", "states.disabled")
};
}
}
代码使用closed
列而不是Status
列,并且演示的输入值是布尔值,而不是数字或字符串。您可以根据自己的需要轻松修改上述代码
如果使用旧的jqGrid 4.5.2,您可以将上述代码修改为
rowattr: function (rd) {
if (rd.closed) {
return {
"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"
};
}
}
并定义CSS类ui jqgrid disablePointerEvents
,如下所示:
.ui jqgrid disablePointerEvents{
指针事件:无;
}
使用jqGrid 4.5.2,它也可以工作。您使用哪个版本的jqGrid?您使用的jqGrid的哪个分支(,或者我使用的jqGrid 4.5.2免费jqGrid版本中的一些旧jqGrid,。仅使用parammultiselect:true,没有额外的编辑。感谢您的宝贵输入。但是,应用类ui状态后的问题被禁用
行被禁用(禁用的行可以有选中/未选中的值)并且客户端看不到选中状态。应用上述类后,网格的某些列上存在超链接。超链接功能不起作用。谢谢