我有一个带有loadonce的JQGrid:true(所以它是所有客户端)和启用分页(用20页)。
我想指定一行(以编程方式,没有用户输入)并让我的网格导航到相应的页面以选择指定的行。
当前的JQGrid可以实现吗?
我研究了搜索和过滤器,但只是用新行重新加载网格 - 我需要我的网格导航到正确的页面 - 保持其数据和结构。
我正在优化我的网格结构,因此所需的任何更改(例如客户端到服务器端)都是可能的。
答案 0 :(得分:17)
因为您使用loadonce:true
,所以您在服务器上准备数据。在服务器端,您可以决定必须选择哪一行。在服务器端,您还可以轻松计算选定行的哪个页面。您可以将所选行的ID和所选页面作为userdata的一部分包含在内。因此,从服务器发送的数据可能如下所示:
{
"total": 5,
"page": 1,
"records": 107,
"rows": [
...
],
"userdata": {
"page": 3,
"selId": 24
}
}
在loadComplete
内,您可以执行以下操作
loadComplete: function(data) {
if (jQuery("#list").getGridParam('datatype') === "json") {
// data.userdata is the same as jQuery("#list").getGridParam('userData');
var userdata = jQuery("#list").getGridParam('userData');
var curPage = jQuery("#list").getGridParam('page'); // is always 1
if (curPage !== userdata.page) {
setTimeout(function(){
jQuery("#list").setGridParam(
{ page: userdata.page }).trigger("reloadGrid");
jQuery("#list").setSelection (userdata.selId, true);
},100);
}
else {
jQuery("#list").setSelection (userdata.selId, true);
}
}
}
您可以在http://www.ok-soft-gmbh.com/jqGrid/DataToSelect.htm和http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect.htm上看到一些工作示例。
更新:Free jqGrid支持使用版本4.10.0的multiPageSelection:true
选项。该选项允许非常容易地设置网格中多行的选择(并且它非常快速地工作,因为它在创建网格的主体期间直接设置选择状态)。请参阅the answer和the demo以及the readme to 4.10.0。