jqgrid有没有办法在客户端处理这个问题?
解决方法
如果您不需要按“多重选择”列排列the demo,则需要执行.有关演示的一些小说:“multiselect”列中的复选框仅在当前页面上选择/取消选择所有行.如果你想要另一个行为,代码将会更加简单.我通过加载网格直接包含在3个项目的演示选择中.将在第一页上选择两个项目,在第二页上选择一个项目.在某些情况下,行为可能很有趣.如果你不需要这个,你应该注释行idsOfSelectedRows = [“8”,“9”,“10”];
下面你会发现演示代码中最重要的部分
var $grid = $("#list"),idsOfSelectedRows = [],updateIdsOfSelectedRows = function (id,isSelected) { var index = $.inArray(id,idsOfSelectedRows); if (!isSelected && index >= 0) { idsOfSelectedRows.splice(index,1); // remove id from the list } else if (index < 0) { idsOfSelectedRows.push(id); } }; // initialize selection idsOfSelectedRows = ["8","9","10"]; $grid.jqGrid({ datatype: 'local',// ... other parameters multiselect: true,onSelectRow: updateIdsOfSelectedRows,onSelectAll: function (aRowids,isSelected) { var i,count,id; for (i = 0,count = aRowids.length; i < count; i++) { id = aRowids[i]; updateIdsOfSelectedRows(id,isSelected); } },loadComplete: function () { var $this = $(this),i,count; for (i = 0,count = idsOfSelectedRows.length; i < count; i++) { $this.jqGrid('setSelection',idsOfSelectedRows[i],false); } } });
如果您希望您可以考虑将idsOfSelectedRows作为jqGrid的附加参数.目前没有jqGrid参数的验证,你可以在那里扩展. idsOfSelectedRows与相应的jqGrid一起将持续存在优势.
UPDATED:Free jqGrid jqGrid的fork支持multiPageSelection:可以与multiiselect组合的true选项:true选项.它允许在许多页面上保存参数selarrrow(所选行的ids列表).默认情况下,jqGrid在分页期间重置数组selarrrow,但是在使用multiPageSelection的情况下为true:multiselect:true它不会重置.此外,它在构建页面期间预选从selarrrow数组的所有行.因此,如果使用项目的所有rowid(所有页面上的所有行)填充selarrrow数组,则将显示所选行.用户仍然可以取消选择某些行,并且jqGrid不会更改用户所做的更改.
The demo,为the answer创建,显示了multiPageSelection的使用:在免费的jqGrid中为true. Another answer简要介绍了免费jqGrid的其他新选项:multiselectPosition:“right”,允许将多重选择复选框移动到右侧,multiiselectPosition:“none”,允许使用多选功能,无需任何多选列,并具有MultiselectCheckBox回调,用于创建不在jqGrid的所有行中的多重选择复选框.