[英]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.