jqGrid free multiPageSelect multiselect清除selarrrow

时间:2018-07-24 18:11:06

标签: jqgrid

我有一个带有multiselect和multiPageSelection的jqgrid。我的用户可以在ajax页面调用之间的不同页面上选择不同的行。我向寻呼机添加了自定义按钮和方法,以清除选定的行,而与页面无关:

        $("#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,重置选择,然后将multiPageSelection设置为true才能完成这项工作。

我尝试了

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

,然后是以下之一:

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

他们都没有工作。他们要么生成错误,要么命令被忽略,并且selarrrow仍然包含值。

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

是否有jqgrid命令来重置选择,而与multiPageSelect无关?

1 个答案:

答案 0 :(得分:1)

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

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

或者您可以使用

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

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