如何限制在JQGRID中的Header Select All事件中选择的特定行

使用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但它在行选择过程后被调用,我无法在行选择更改之前找到调用的相应事件。 请建议适当的解决方案

编辑:

网格的复选框即使被禁用也可能具有值(即已选中/未选中)。

网格具有导航到另一页面的超链接。

实现需求的最简单方法是使用rowattr禁用 Status等于-1的行。

该演示使用免费的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; } 

该演示使用jqGrid 4.5.2,它也可以工作。