【发布时间】:2017-02-04 05:44:20
【问题描述】:
当我将multiselect: true 添加到我的jqgrid 时,我看到jqgrid 为每一行添加了一个复选框。显示的每个复选框都未选中。有没有办法可以根据我用来填充网格的数据预设这些复选框?例如,如果我的网格有一个名为 selected 的列,而我正在显示的一行的选定值为 1,我想显示该复选框行被检查。当一行的选定字段为 0 时,我希望复选框保持未选中状态。这可能吗?
【问题讨论】:
当我将multiselect: true 添加到我的jqgrid 时,我看到jqgrid 为每一行添加了一个复选框。显示的每个复选框都未选中。有没有办法可以根据我用来填充网格的数据预设这些复选框?例如,如果我的网格有一个名为 selected 的列,而我正在显示的一行的选定值为 1,我想显示该复选框行被检查。当一行的选定字段为 0 时,我希望复选框保持未选中状态。这可能吗?
【问题讨论】:
您的问题的答案取决于您使用的 jqGrid 的分支。我开发了免费的 jqGrid fork 并实现了multiPageSelection: true 选项。只需填写selarrrow 数组(例如,您可以根据从服务器返回的数据在beforeProcessing 内部填写)。查看为the answer 创建的the demo。它表明selarrrow 数组包含的 id 与当前页面上的更多。在分页或初始填充空闲 jqGrid 期间设置 chechboxes 的状态 基于 selarrrow 数组。它的工作方式与自定义格式化程序一样有效,rowattr 或 cellattr。
如果您无法升级到免费的 jqGrid,那么您可以在 loadComplete 内调用 setSelection(请参阅 the old answer)。在使用 multiPageSelection: true 的情况下,它会运行得更慢,但它会起作用。
【讨论】:
在loadComplete,有这样的东西
var i;
var rowids = $('#myTable').jqGrid('getDataIDs');
for (i = 0;i < count = rowids.length;i+=1) {
// condition to mark it check
$('#myTable').jqGrid('setSelection', rowids[i], false);
}
干杯!
【讨论】:
您需要遍历数据并应用检查。
【讨论】: