jquery – jqgrid:多选和禁用检查(条件)

前端之家收集整理的这篇文章主要介绍了jquery – jqgrid:多选和禁用检查(条件)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我喜欢jqGrid,但有时候似乎比他们应该更复杂。
我想要实现的是在每行上设置一个复选框,以便用户可以选择要提交/处理的行。
但是,我需要阻止一些复选框,因为用户对该行没有任何授权。

我试图设置多重选择:true,然后我试图隐藏复选框:

loadComplete: function (data) {
    if (data.rows.length > 0) {
        for (var i = 0; i < data.rows.length; i++) {
            if (data.rows[i].cell[7] == 'false') {
                $("#jqg_OrdersGrid_" + data.rows[i].id).css("visibility","hidden");
            }
        }
    }
},

它的效果很好,但是.jqGrid(‘getGridParam’,’selarrrow’)给我所选的行,即使它们没有被检查。
是否有任何其他方式可以启用/禁用复选框,以及如何知道哪些已被检查?

谢谢

解决方法

我建议你禁用一些复选框从可选择的“禁用”属性。要充分实现,您将需要

在loadComplete事件句柄中设置“disabled”
>另外防止在BeforeSelectRow事件句柄之前选择禁用的行
>要支持多选列的标题中的“全选”复选框,可以实现onSelectAll事件句柄,这些事件句柄可以修复禁用行的选择。

您可以看到相应的演示here.代码中最重要的部分是:

var grid = $("#list10"),i;
grid.jqGrid({
    //...
    loadComplete: function() {
        // we make all even rows "protected",so that will be not selectable
        var cbs = $("tr.jqgrow > td > input.cBox:even",grid[0]);
        cbs.attr("disabled","disabled");
    },beforeSelectRow: function(rowid,e) {
        var cbsdis = $("tr#"+rowid+".jqgrow > td > input.cBox:disabled",grid[0]);
        if (cbsdis.length === 0) {
            return true;    // allow select the row
        } else {
            return false;   // not allow select the row
        }
    },onSelectAll: function(aRowids,status) {
        if (status) {
            // uncheck "protected" rows
            var cbs = $("tr.jqgrow > td > input.cBox:disabled",grid[0]);
            cbs.removeAttr("checked");

            //modify the selarrrow parameter
            grid[0].p.selarrrow = grid.find("tr.jqgrow:has(td > input.cBox:checked)")
                .map(function() { return this.id; }) // convert to set of ids
                .get(); // convert to instance of Array
        }
    }
);

UPDATED:Free jqGrid支持hasMultiselectCheckBox回调,可用于创建多选择复选框,而不是jqGrid的所有行。可以使用rowattr来另外禁用某些行。因此,将以更简单的方式获得上述功能。建议对本地数据(数据类型:“local”或loadonce:true)另行使用multiPageSelection:true选项。选项multiPageSelection:true将在分页上保存数组selarrrow。它允许通过填充相应的ids inselarrrow“预先选择”一些行。有关更多信息,请参阅the answerthe answer的更新部分the demo

猜你在找的jQuery相关文章