jqgrid从服务器端重新加载数据时无法加载特定页面

发布于 2024-11-18 17:05:11 字数 198 浏览 1 评论 0原文

我正在使用 jqgrid 3.8.2, 我正在尝试使用下面的代码从服务器端重新加载数据并显示特定页面,例如当前页面。 $("#mygrid").setGridParam({datatype:json}).trigger("reloadGrid",[{page:5}]); 网格可以正确从服务器加载数据,但始终显示第一页而不是第 5 页。 有人可以帮我吗?

问候 西蒙

I'm using jqgrid 3.8.2,
I'm trying to use below code to reload data from server side and show specific page, like current page. $("#mygrid").setGridParam({datatype:json}).trigger("reloadGrid",[{page:5}]);
grid could load data from server properly, but always show first page instead of page 5.
anybody could give me a hand on it?

Regards
Simon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2024-11-25 17:05:11

我想您使用 loadonce: true 参数。要从服务器重新加载数据,请将 datatype: 设置为 'json' (我希望您使用 setGridParam({datatype:'json'}) 而不是 setGridParam({datatype:json}) 就像问题的代码片段中一样)。从服务器加载数据后,将显示本地数据的第一页

要解决该问题,您必须在 loadComplete 内再次重新加载网格,但现在您应该重新加载本地网格。要没有重新加载循环并允许本地分页,您应该验证当前的数据类型是否为“json”:

var myGrid = $("#mygrid"), currentPage = 1;
...
myGrid.jqGrid({
    // all grid parameters and additionally the following
    loadComplete: function() {
        if (this.p.datatype === 'json' && currentPage !== 1) {
            setTimeout(function() {
                myGrid.trigger("reloadGrid",[{page:currentPage}]);
            }, 50);
        }
    }
});
....
currentPage = 5;
myGrid.setGridParam({datatype:'json'}).trigger("reloadGrid",[{page:currentPage}]);

请参阅演示这里

I suppose that you use loadonce: true parameter. To reload the data from the server you set datatype: to 'json' (I hope that you use setGridParam({datatype:'json'}) and not setGridParam({datatype:json}) like it is in the code fragment from the question). After the data will be loaded from the server the first page of the local data will be displayed.

To solve the problem you will have to reload the grid one more time inside of loadComplete, but now you should reload the local grid. To have no reloading loop and to allow local paging you should verify whether the current datatype is 'json':

var myGrid = $("#mygrid"), currentPage = 1;
...
myGrid.jqGrid({
    // all grid parameters and additionally the following
    loadComplete: function() {
        if (this.p.datatype === 'json' && currentPage !== 1) {
            setTimeout(function() {
                myGrid.trigger("reloadGrid",[{page:currentPage}]);
            }, 50);
        }
    }
});
....
currentPage = 5;
myGrid.setGridParam({datatype:'json'}).trigger("reloadGrid",[{page:currentPage}]);

See the demo here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文