【问题标题】:jqgrid - Disable Header Check box (multiselect = true) if all rows are disablejqgrid - 如果所有行都被禁用,则禁用标题复选框(多选 = true)
【发布时间】:2015-06-01 04:36:41
【问题描述】:

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

根据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

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我建议您在 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);
        }
    }
    

    我在第二页放了一个启用,所以可以切换页面,看到上面的代码正常工作。

    【讨论】:

      【解决方案2】:

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

      隐藏元素

      var myGrid = $("#list"); $("#cb_"+myGrid[0].id).hide();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-08
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 2014-07-11
        • 2017-03-18
        • 2020-06-22
        相关资源
        最近更新 更多