如果启用了分页,则jqgrid multiselect仅选择当前页面上的行。如何让它跨页面选择行?

时间:2011-01-17 07:06:22

标签: jqgrid multi-select

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

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

2 个答案:

答案 0 :(得分:3)

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

为什么不使用jqGrid的onSelectRowonSelectAll事件,而不是将事件附加到每个复选框?选择行时,请检查所选行的列表是否包含此行(基于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);
        }
    },
    ....
 )};

希望这有助于其他人寻求解决方案。

答案 1 :(得分:0)

我假设您想要在一个页面中选择一些行,然后转到另一个页面,可能会选择更多行,并保留所有这些选择。

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