8

我注意到在 jqgrid 演示(http://www.trirand.com/blog/jqgrid/jqgrid.html > Advanced > Multiselect)中,如果启用了分页,则仅选择当前页面上的行(可见)。

关于让它在多个页面上工作的任何提示。或任何其他替代解决方案?

4

2 回答 2

3

我知道这个问题有点尘土飞扬,但我最近需要这个功能,并找到了我认为更干净的方法。

为什么不使用jqGrid的onSelectRow和事件,而不是为每个复选框附加一个事件?onSelectAll选择一行后,检查我们的选定行列表是否包含该行(基于 id)。如果它不存在且已被选中,则将其添加到列表中,如果它存在且不再被选中,则将其删除。如果选择了所有行,则遍历它们。

var $grid  = jQuery("#myGrid");
var updateIdsOfSelectedRows = function (id, isSelected) {
    var contains = idsOfSelectedRows.contains(id);
    if (!isSelected && contains) {
        for(var i=0; i<idsOfSelectedRows.length; i++) {
            if(idsOfSelectedRows[i] == id) {
                idsOfSelectedRows.splice(i, 1);
                break;
            }
        }
    }
    else if (!contains) {
        idsOfSelectedRows.push(id);
    }
};

$grid.jqGrid({
    ....
    onSelectRow: function(rowid, status){
        updateIdsOfSelectedRows(rowid, status);
    },
    onSelectAll: function (aRowids, status) {
        var i, count, id;
        for (i = 0, count = aRowids.length; i < count; i++) {
            id = aRowids[i];
            updateIdsOfSelectedRows(id, status);
        }
    },
    ....
 )};

希望这可以帮助其他人寻找解决方案。

于 2012-07-30T15:38:48.897 回答
0

我假设您想在一页中选择一些行,然后转到另一页,也许选择更多行,并保留所有这些选择。

您必须处理每个复选框上的选择事件。将事件处理程序附加到each $("#cb_my_grid")并保留一组选定项。然后,当您需要数据时(可能是提交页面时),您可以提交数组中的值。

于 2011-03-04T18:00:36.273 回答