我的jqgrid包含多个页面。当我对任何列进行排序时,页面将重置为第一个。
(也适用于filterToolbar,即调用$(“#my-grid”)[0] .triggerToolbar();)
有什么方法可以在排序/过滤后保留当前页面吗?
修改
实际上我的问题有点复杂。
我将jqgrid首选项(rowNum,page,filters等..)保存到cookie中。 当我第一次加载页面时加载prefs。 我使用Mark B的答案中的技巧(参见jqGrid Filter Toolbar initial default value)来填充我的过滤器默认值。
问题:在这种情况下,页面始终设置为第一个。(因为triggerToolbar调用),即它不保存状态。
答案 0 :(得分:2)
我不太明白你的要求。例如,如果用户在第二页上看到了某些行,然后用户单击了列标题对列进行排序,则将对网格进行排序。用户之前看到的数据可以在任何页面上。所以我不明白为什么你要保持当前页面,这将显示之前显示的绝对数据。
如果您确实需要按住页面,可以按以下方式执行此操作。在loadComplete
内,您可以保存page
参数的值。在onSortCol
事件处理程序内部,该值将已更改为1,但您可以将其更正为之前保存的值。我没有对此进行测试,但我认为它应该可行。
更新:现在我想我理解你原来的问题。我认为你应该选择另一种描述here或here的方式。您需要的只是在cookie中保存postData
值,如果search:true
不为空(或其他过滤器参数取决于您使用的选项),则设置jqGrid的filters
参数)。在这种方式中,您不仅可以恢复过滤器,还可以恢复page
值。最终解决方案可能有点依赖于jqGrid参数和您使用的filterToolbar
参数。因此,您将遇到实施问题,您应该包含更多使用的代码。
答案 1 :(得分:0)
我使用mvc和jqgrid,这个solgo对我有用:
$("#GridTable").jqGrid({
...
onSortCol:
function () {
var postpage = jQuery("#GridTable").getGridParam('postData');
jQuery("#GridTable").setGridParam({ page: postpage.page });
},
...
});