jqgrid - 如果禁用所有行,则禁用标题复选框(multiselect = true)

时间:2015-06-01 04:36:41

标签: jquery jqgrid

将jqgrid与multiSelect="true"选项一起使用。我正在禁用行并根据下面提到的某些标志状态阻止其选择

根据IS_FLAGGEd = 1

禁用行
//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
        }

要禁用标题复选框,在代码下方实现,但即使禁用了一行,它也会禁用标题复选框。

//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

2 个答案:

答案 0 :(得分:0)

我建议您保存jqGrid自定义选项中是否禁用所有行的信息。相应的代码可能类似于使用

的演示http://jsfiddle.net/OlegKi/aagxejj5/44/
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);
    }
}

我在第二页上放置了一个,因此可以切换页面并查看上述代码是否正常工作。

答案 1 :(得分:0)

标题中的复选框具有从“cb_”前缀和网格ID组合的id。所以你可以用

隐藏元素

var myGrid = $(“#list”); $( “#CB _” + myGrid [0] .ID).hide();