JQGrid以编程方式选择网格行

Bob*_*Bob 9 navigation client-side jqgrid

我有一个带有loadonce的JQGrid:true(所以它是所有客户端)和启用分页(有20页).

我想指定一行(以编程方式,没有用户输入)并让我的网格导航到相应的页面以选择指定的行.

这可能与当前的JQGrid有关吗?

我已经研究过搜索和过滤,但只是用新行重新加载网格 - 我需要我的网格导航到正确的页面 - 保持其数据和结构.

我正在优化我的网格结构,因此所需的任何更改(例如客户端到服务器端)都是可能的.

Ole*_*leg 17

因为您使用loadonce:true,所以您在服务器上准备数据.在服务器端,您可以决定必须选择哪一行.在服务器端,您还可以轻松计算选定行的哪个页面.例如,所选行的ID和所选页面可以包含为userdata的一部分.因此,从服务器发送的数据可能如下所示:

{
    "total": 5,
    "page": 1,
    "records": 107,
    "rows": [
        ...
    ],
    "userdata": {
        "page": 3,
        "selId": 24 
    }
}
Run Code Online (Sandbox Code Playgroud)

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在http://www.ok-soft-gmbh.com/jqGrid/DataToSelect.htmhttp://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect.htm上看到一个工作示例.

更新:免费的jqGrid支持multiPageSelection:true版本4.10.0的选项strarting.该选项允许在网格中设置多行的选择非常容易(并且它非常快速地工作,因为它在创建网格主体期间直接设置选择状态).请参阅答案演示以及4.10.0的自述文件.