jquery – jqGrid – 保存复选框选中状态

前端之家收集整理的这篇文章主要介绍了jquery – jqGrid – 保存复选框选中状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在jqGrid中检查页面的复选框会清除所选复选框.所以,如果我在第1页检查一些复选框,然后单击下一步转到第2页,然后回到第1页,所选的复选框不再被选中.

jqgrid有没有办法在客户端处理这个问题?

解决方法

the answer的第一部分包含您的问题的答案.有一点改进版的演示,你可以找到 here.

如果您不需要按“多重选择”列排列the demo,则需要执行.有关演示的一些小说:“multiselect”列中的复选框仅在当前页面上选择/取消选择所有行.如果你想要另一个行为,代码将会更加简单.我通过加载网格直接包含在3个项目的演示选择中.将在第一页上选择两个项目,在第二页上选择一个项目.在某些情况下,行为可能很有趣.如果你不需要这个,你应该注释行idsOfSelectedRows = [“8”,“9”,“10”];

下面你会发现演示代码中最重要的部分

var $grid = $("#list"),idsOfSelectedRows = [],updateIdsOfSelectedRows = function (id,isSelected) {
        var index = $.inArray(id,idsOfSelectedRows);
        if (!isSelected && index >= 0) {
            idsOfSelectedRows.splice(index,1); // remove id from the list
        } else if (index < 0) {
            idsOfSelectedRows.push(id);
        }
    };

// initialize selection
idsOfSelectedRows = ["8","9","10"];

$grid.jqGrid({
    datatype: 'local',// ... other parameters
    multiselect: true,onSelectRow: updateIdsOfSelectedRows,onSelectAll: function (aRowids,isSelected) {
        var i,count,id;
        for (i = 0,count = aRowids.length; i < count; i++) {
            id = aRowids[i];
            updateIdsOfSelectedRows(id,isSelected);
        }
    },loadComplete: function () {
        var $this = $(this),i,count;
        for (i = 0,count = idsOfSelectedRows.length; i < count; i++) {
            $this.jqGrid('setSelection',idsOfSelectedRows[i],false);
        }
    }
});

如果您希望您可以考虑将idsOfSelectedRows作为jqGrid的附加参数.目前没有jqGrid参数的验证,你可以在那里扩展. idsOfSelectedRows与相应的jqGrid一起将持续存在优势.

UPDATED:Free jqGrid jqGrid的fork支持multiPageSelection:可以与multiiselect组合的true选项:true选项.它允许在许多页面上保存参数selarrrow(所选行的ids列表).默认情况下,jqGrid在分页期间重置数组selarrrow,但是在使用multiPageSelection的情况下为true:multiselect:true它不会重置.此外,它在构建页面期间预选从selarrrow数组的所有行.因此,如果使用项目的所有rowid(所有页面上的所有行)填充selarrrow数组,则将显示所选行.用户仍然可以取消选择某些行,并且jqGrid不会更改用户所做的更改.

The demo,为the answer创建,显示了multiPageSelection的使用:在免费的jqGrid中为true. Another answer简要介绍了免费jqGrid的其他新选项:multiselectPosition:“right”,允许将多重选择复选框移动到右侧,multiiselectPosition:“none”,允许使用多选功能,无需任何多选列,并具有MultiselectCheckBox回调,用于创建不在jqGrid的所有行中的多重选择复选框.

猜你在找的jQuery相关文章