使用jqGrid我已通过以下事件禁用复选框列上的行选择:
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 Checkbox时,它会选择所有行。我正在尝试使用事件onSelectAll
但是在行选择过程之后调用它,并且我无法在行选择更改之前找到调用的相应事件。请建议适当的解决方案。
修改:
网格的复选框即使已被禁用,也可能具有值(即已选中/未选中)。
网格具有导航到另一个页面的超链接。
答案 0 :(得分:3)
实施要求的最简单方法是使用rowattr
禁用 Status
等于-1的行。
The demo使用free jqGrid 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 {
pointer-events: none;
}
The demo使用jqGrid 4.5.2,它也可以。