jqGrid 免费 multiPageSelect 多选清除 selarrrow

jqGrid free multiPageSelect multiselect clear selarrrow

我有一个带有 multiselect 和 multiPageSelection 的 jqgrid。我的用户可以在 ajax 个页面调用之间 select 不同页面上的不同行。我已经向寻呼机添加了一个自定义按钮和方法来清除 selected 行,无论页面如何:

        $("#grid").navButtonAdd('#pager', {
        caption: "Clear",
        title: "Clear Selection",
        buttonicon: "ui-icon-circle-close",
        onClickButton: function() {

            $("#grid").setGridParam({ multiPageSelection: false });
            $("#grid").resetSelection();
            $("#grid").setGridParam({ multiPageSelection: true});
        },      
        position: "first"
    });

您可以看到,我必须将 multiPageSelection 设置为 false,重置 selection,然后将 multiPageSelection 设置回 true 才能正常工作。

我试过了

$("#grid").resetSelection();

然后是以下之一:

$("#grid").setGridParam({ selarrrow: ""});
$("#grid").setGridParam({ selarrrow: []});
$("#grid").setGridParam({ selarrrow: {}});
$("#grid").setGridParam({ selarrrow: null});

None 他们成功了。它们要么产生了错误,要么命令被忽略并且 selarrrow 仍然包含值。

resetSelection 仅在 multiPageSelection 为真时清除当前页面上的值。

是否有 jqgrid 命令来重置 selection 而不管 multiPageSelect?

如果我正确理解你的问题,那么你只是使用了错误的方式来重置数组参数 selarrrow(或其他参数,如 data)。最简单的方法是使用 getGridParam 而不是 setGridParam。调用 getGridParam 没有 附加参数 returns 对 jqGrid 所有内部参数的引用 你会很容易替换任何数组参数:

var $grid = $("#grid"), p = $grid.jqGrid("getGridParam"});
p.selarrrow = [];

或者您可以使用

$("#grid").jqGrid("setGridParam", { selarrrow: [] }, true);

与第二个参数true。最后一种方法更具可读性,但是 setGridParam 的任何用法都比 getGridParam.

的用法慢