JQGrid以编程方式选择网格行

JQGrid以编程方式选择网格行,jqgrid,navigation,client-side,Jqgrid,Navigation,Client Side,我有一个带有loadonce:trueso的JQGrid,它都是客户端的,支持分页,比如说20页 我希望以编程方式指定行,无需用户输入,并让我的网格导航到相应的页面以选择指定的行 在当前的JQGrid中,这可能吗 我已经研究了搜索和筛选,但这只是用新行重新加载网格-我需要我的网格导航到正确的页面-保留其数据和结构 我正在优化我的网格结构,因此任何需要的更改(例如客户端到服务器端)都是可能的。因为您使用loadonce:true,那么您就可以在服务器上准备数据。在服务器端,您可以决定必须选择哪一行

我有一个带有loadonce:trueso的JQGrid,它都是客户端的,支持分页,比如说20页

我希望以编程方式指定行,无需用户输入,并让我的网格导航到相应的页面以选择指定的行

在当前的JQGrid中,这可能吗

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

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

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

{ 总数:5, 页码:1, 记录:107, 行:[ ... ], 用户数据:{ 页码:3, 塞利德:24 } } 在loadComplete内部,您可以执行以下操作

loadComplete:functiondata{ 如果jQuerylist.getGridParam'datatype'==json{ //data.userdata与jQuerylist.getGridParam'userdata'相同; var userdata=jQuerylist.getGridParam'userdata'; var curPage=jQuerylist.getGridParam'page';//始终为1 如果curPage!==userdata.page{ setTimeoutfunction{ jQuerylist.setGridParam {page:userdata.page}.triggerreloadGrid; jQuerylist.setSelection userdata.selId,true; },100; } 否则{ jQuerylist.setSelection userdata.selId,true; } } } 您可以在和上看到的工作示例


更新:支持4.10.0版的multiPageSelection:true选项。该选项允许非常轻松地设置网格中多行的选择,并且工作速度非常快,因为它在创建网格主体时直接设置选择状态。请参阅和。

我对如何实现这一点有一个想法,但我仍然想知道是否有一种内置方式。我的想法:1。a=获取每个寻呼机的元素总数。2.b=获取网格中的元素总数/a 3。导航到B4页。选择具有预定义id的元素。您是否测试了与我建议的树状网格相同的内容?在loadonce的情况下,无需向服务器发出任何请求即可工作:真的吗?@Oleg:嘿!我将在未来几天内实施你的建议。目前正在修复我今天发布的版本的bug。我的意思是,当你有结果的时候,让我知道你的结果。像往常一样谢谢你Oleg!每次我想导航到不同的页面时,这种方法是否需要我在服务器上重新创建网格?我的程序有一个树和网格。当用户在树中选择一个元素时,网格将搜索该元素并在网格中选择它。嗨!因为您使用loadonce:true,所以只有第一次加载来自服务器。我在loadComplete中测试getGridParam'datatype'==json,因为jqGrid将变为本地,在下一次刷新时,分页、排序、筛选/搜索所有工作都将在本地进行,而不使用服务器。对于树型网格我没有经验,但是因为它有相同的jqGrid API,所以所有这些都应该可以工作,或者可以基于相同的想法修改相应的代码。嗨,Oleg!我已经根据你的建议实现了我的选择功能,它工作得非常好!谢谢由于我的表数据从不改变,所以我对它做了一些修改——在加载时,我存储了一个包含所有行及其对应ID的json列表。在选择树节点时,我查找节点的页码并在网格中选择它。@Byron Cobb:我很高兴听到你解决了你的问题!不客气!