排序jqgrid列时是否有任何方法可以保留当前页面?

时间:2011-10-10 07:37:22

标签: jqgrid

我的jqgrid包含多个页面。当我对任何列进行排序时,页面将重置为第一个。

(也适用于filterToolbar,即调用$(“#my-grid”)[0] .triggerToolbar();)

有什么方法可以在排序/过滤后保留当前页面吗?

修改

实际上我的问题有点复杂。

我将jqgrid首选项(rowNum,page,filters等..)保存到cookie中。 当我第一次加载页面时加载prefs。 我使用Mark B的答案中的技巧(参见jqGrid Filter Toolbar initial default value)来填充我的过滤器默认值。

问题:在这种情况下,页面始终设置为第一个。(因为triggerToolbar调用),即它不保存状态。

2 个答案:

答案 0 :(得分:2)

我不太明白你的要求。例如,如果用户在第二页上看到了某些行,然后用户单击了列标题对列进行排序,则将对网格进行排序。用户之前看到的数据可以在任何页面上。所以我不明白为什么你要保持当前页面,这将显示之前显示的绝对数据。

如果您确实需要按住页面,可以按以下方式执行此操作。在loadComplete内,您可以保存page参数的值。在onSortCol事件处理程序内部,该值将已更改为1,但您可以将其更正为之前保存的值。我没有对此进行测试,但我认为它应该可行。

更新:现在我想我理解你原来的问题。我认为你应该选择另一种描述herehere的方式。您需要的只是在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 });
           },
...
});