我想以编程方式选择jqgrid中所有页面的所有行以获取批量更新实用程序。我该如何实现这一目标?我尝试过很多东西,但似乎都没有用。任何人都可以指出我正确的方向。 我的代码如下:
var tot_rows=$("#template-list").jqGrid('getGridParam', 'records');
for(var i=1; i<=tot_rows; i++)
{
$('#template-list').setSelection(tot_rows[i], true);
}
谢谢,
阿妮塔
答案 0 :(得分:3)
首先,了解jqGrid仅支持在当前页面上选择行非常重要。 jqGrid的设计是在没有支持本地数据分页时完成的。
下一个问题是只有在网格中加载数据之后才能选择数据。例如,可以使用loadCompleted
来选择某些行。
只有在使用multiselect: true
选项时才可以选择多行作为一行。在jqGrid自动添加带有chechboxes的列的情况下,它会在列标题中添加复选框。通过检查chechbox,可以选择curect页面中的所有行。 Chechbox的id
前缀为cb_
,后跟网格的id
。例如,如果网格的ID为cb_template-list
,则为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
数组的所有行。因此,如果将selarrrow
数组填充所有项目的rowid(所有页面上的所有行),则将显示所选行。用户仍然可以取消选择某些行,jqGrid不会更改用户所做的更改。
顺便说一下,如果从服务器加载数据,可以在selarrrow
回调中填充beforeProcessing
数组。
答案 1 :(得分:0)
我想选择jqgrid的所有行的原因是我可以使用selarrrow获取所有这些行的ID。但我终于想通了,因为那是我想要选择所有这些的唯一原因,我也可以用以下方式做到这一点
var tot_rows=$("#template-list").jqGrid('getGridParam', 'records');
var mydata = $('#template-list').jqGrid('getGridParam','data');
var indexes = $('#template-list').jqGrid('getGridParam', '_index');
for(var i=1; i<=tot_rows; i++)
{
recId=mydata[indexes[i]].recId;
//some processing
}
它有效!感谢你们两个人的时间和帮助!!!