我有一个带有loadonce:true(所以它是所有客户端)和启用分页(有20页)的JQGrid。
我想指定一行(以编程方式,无需用户输入),然后让我的网格导航到相应的页面以选择指定的行。
当前的JQGrid有可能吗?
我已经研究过搜索和过滤器,但是只是用新的行重新加载了网格-我需要我的网格才能导航到正确的页面-保留其数据和结构。
我正在优化网格结构,因此可能需要进行任何更改(例如,客户端到服务器端)。
最佳答案
由于您使用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。
关于JQGrid以编程方式选择网格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564898/