2015-11-10 47 views
3

使用的jqGrid我已經通過以下事件禁用的複選框列單擊行選擇:如何限制perticular行要在標題選擇中選擇所有的事件中的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; 
    }, 

但是當我試圖點擊頁眉複選框它選擇所有行。我正在嘗試使用事件onSelectAll,但它在行選擇過程後被調用,並且我無法找到在行選擇更改前調用的適當事件。請提出適當的解決方案

編輯:

網格的複選框可以有值(即選中/未選中),即使它被禁用。

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

+0

您使用的是哪個版本的jqGrid?你使用哪個jqGrid的分支([免費jqGrid](https://github.com/free-jqgrid/jqGrid),[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或者一些舊的jqGrid在版本<= 4.7)中?你在網格中使用額外的**編輯**,並希望允許「Status」==='-1'的行是可編輯的嗎? – Oleg

+0

我正在使用** jqGrid 4.5.2 **免費jqGrid ,.沒有使用參數'multiselect:true'的附加編輯。 – Mayank

回答

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和它也可以工作。

+0

感謝您的寶貴意見。但是,在應用「ui-state-disabled」類後,該行被禁用(禁用的行可能已經檢查/未檢查的值),並且檢查的狀態對客戶端不可見。應用上述類後,某些網格列上有超鏈接超鏈接功能無法工作。謝謝 – Mayank

相關問題