簡體   English   中英

如何限制在標題上選擇特定行在JQGRID中選擇所有事件

[英]How to restrict particular Row to be selected on Header Select All event in 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但它在行選擇過程后被調用,並且我無法在行選擇更改之前找到調用的相應事件。 請建議適當的解決方案

編輯:

網格的復選框即使被禁用也可能具有值(即已選中/未選中)。

網格具有導航到另一頁面的超鏈接。

實現您的需求的最簡單方法是使用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,它也有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM