javascript - 以编程方式选择 jqgrid 所有页面的所有行?

标签 javascript jquery jqgrid rows

我想以编程方式选择 jqgrid 中所有页面的所有行,以用于批量更新实用程序。我该如何实现这个目标?我尝试了很多方法,但似乎都不起作用。有人能指出我正确的方向吗? 我的代码如下:

var tot_rows=$("#template-list").jqGrid('getGridParam', 'records');
for(var i=1; i<=tot_rows; i++)
{
   $('#template-list').setSelection(tot_rows[i], true);
}

谢谢

安妮塔

最佳答案

首先,重要的是要了解 jqGrid 仅支持当前页面上的行选择。 jqGrid的设计是在不支持本地数据分页的情况下完成的。

下一个问题是只有在数据加载到网格中后才能选择数据。例如,可以使用 loadCompleted 来选择一些行。

仅当使用 multiselect: true 选项时才可以选择更多内容作为一行。在这种情况下,jqGrid 会自动添加带有复选框的列,并在列标题中添加复选框。通过选中复选框,可以选择当前页面中的所有行。 Chechbox 具有 id,其前缀为 cb_,后跟网格的 id。例如,如果网格的 id 为 template-list,则为 cb_template-list。所以你可以使用下面的代码

loadComplete: function () {
    $("#cb_" + this.id).click();
}

或者,如果网格的id可以包含一些特殊字符,那就更好了

loadComplete: function () {
    $("#cb_" + $.jgrid.jqID(this.id)).click();
}

因此,显示页面后将直接选择每个页面上的所有行。

更新: Free jqGrid支持 multiPageSelection: true 选项,该选项与 multiselect: true 结合使用。它允许在多个页面上保存参数selarrrow。默认情况下,jqGrid 在分页期间重置数组 selarrrow,但在使用 multiPageSelection: true, multiselect: true 的情况下,它不会重置。此外,它在构建页面期间预选来自selarrrow数组的所有行。因此,如果用项目的所有 rowid(所有页面上的所有行)填充 selarrrow 数组,那么这些行将显示为选中状态。用户仍然可以取消选择某些行,jqGrid 不会更改用户所做的更改。

顺便说一句,如果数据是从服务器加载的,则可以在 beforeProcessing 回调中填充 selarrrow 数组。

关于javascript - 以编程方式选择 jqgrid 所有页面的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935133/

相关文章:

javascript - 试图找到隐藏内容的宽度以调整包含 div 的大小以显示内容(jQuery)

jquery - 在jqgrid中编辑或添加行后如何将数据保存到数据库

javascript - 使用 jquery 访问数组中的数据

javascript - 拆分单词和随机/混杂字母

javascript - 无法读取未定义的属性 setState

javascript - 如何将一个指令的属性值放入AngularJS中的另一个指令中?

jquery - 具有 jsonstring 数据类型的 JQGrid 卡住列

javascript - jqGrid下拉值

javascript - 来自 querySelectorAll 的事件节点

Javascript 使用循环返回字符串中每个单词的第一个字母的位置