如何限制在标题中选择特定行在JQGRID

时间:2015-11-10 10:38:02

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

修改:

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

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

1 个答案:

答案 0 :(得分:3)

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

The demo使用free jqGrid 4.10.0,所有行的选择结果如下图所示:

enter image description here

它使用以下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,它也可以。