2015-06-01 32 views
0

使用jqgrid並使用multiSelect="true"選項。我禁用行和防止基於一些標誌地位的選擇下面基於IS_FLAGGEd = 1jqgrid - 禁用標題複選框(多選)= true,如果所有行都禁用

//disable row which are flagged 
     rowattr: function (item) { 
       if (parseInt(item.IS_FLAGGED) == 1) { 
        return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"}; 
       } 
     }, 

     //prevent selection of disabled rows 
     beforeSelectRow: function (rowid, e) { 
      if ($(e.target).closest("tr.jqgrow").hasClass("ui-state-disabled")) { 
       return false; // not allow select the row 
      } 
      return true; // allow select the row 
     } 

要禁用頭複選框,下面的代碼實現

禁用行(S)作爲被提及,但它會禁用頭檢查即使一行被禁用也是如此。

//disable header checkbox only if all rows are disabled   
     loadComplete: function() { 
      var grid = $("#grid"); 
      var ids = grid.jqGrid('getDataIDs'); 
      for(var i=0;i < ids.length;i++){ 
       var rowId = ids[i]; 
       var rowData = jQuery('#grid').jqGrid ('getRowData', rowId); 
       console.log(rowData.SUBMIT_TO_ACC); 
       if(rowData.FLAG_STATUS == 1){ 
        $('tr.ui-jqgrid-labels').addClass('ui-state-disabled ui-jqgrid-disablePointerEvents'); 
       } 
      } 
     } 

如何禁用頭複選框(multiselect = true),只有當ALL行被禁用即hasClass(ui-state-disabled)

jqGrid的版本= 4.6
jQuery的版本= 1.7.2

回答

0

我建議你保存所有行是否被禁用或不裏面的jqGrid的自定義選項的信息。對應的代碼可能是像它採用

rowattr: function (item, rd, rowid) { 
    var p = $(this).jqGrid("getGridParam"); 
    if (rd.closed === "true" || rd.closed === true) { 
     return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"}; 
    } else { 
     p.isSomeEnabled = true; 
    } 
}, 
beforeRequest: function() { 
    var p = $(this).jqGrid("getGridParam"); 
    p.isSomeEnabled = false; // reset for the filling 
}, 
loadComplete: function() { 
    var p = $(this).jqGrid("getGridParam"), $selAll = $("#cb_" + this.id); 

    if (p.isSomeEnabled) { 
     $selAll.removeClass("ui-state-disabled ui-jqgrid-disablePointerEvents"); 
     $selAll.click(); // select all 
     // one need to trigger the click twice only because of bugs 
     // in case of usage old jQuery version 
     $selAll.click(); // select all 
     $selAll.prop("checked", true); 
    } else { 
     $selAll.addClass("ui-state-disabled ui-jqgrid-disablePointerEvents"); 
     $selAll.prop("checked", false); 
    } 
} 

我把一個在第二頁上啓用,因此可以切換頁面,看到上面的代碼正常工作演示http://jsfiddle.net/OlegKi/aagxejj5/44/

0

標題中的複選框具有由「cb_」前綴和網格標識組合而成的標識。所以你可以隱藏元素

var myGrid = $(「#list」); $(「#cb _」+ myGrid [0] .id).hide();