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

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

使用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复选框时,它会选择所有行。我试图使用event
onSelectAll
,但它在行选择过程之后被调用,并且我无法找到在行选择更改之前调用的适当事件。请提出适当的解决方案

编辑:

网格的复选框可能有值(即选中/未选中),即使它被禁用


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

实现您的需求的最简单方法是使用
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,。仅使用param
multiselect:true
,没有额外的编辑。感谢您的宝贵输入。但是,应用类
ui状态后的问题被禁用
行被禁用(禁用的行可以有选中/未选中的值)并且客户端看不到选中状态。应用上述类后,网格的某些列上存在超链接。超链接功能不起作用。谢谢