0

我需要使用 jqGrid 显示许多“动态”网格。动态我的意思是网格的定义和数据都是从数据库中检索的。页面有很多网格,所以我尽量减少服务器的行程次数,而且数据量很大,所以服务器端的分页是必须的。

我的工作流程是

  • 在每个网格初始化时,在一次服务器调用中检索网格定义和第一页数据。
  • 如果用户排序/分页,则从服务器检索一页数据

因为我想在一次调用中检索网格定义和第一页数据,所以我不能使用 datatype: 'json', url: '###' 方法;相反,我这样做:

grid.jqGrid({
    mtype: 'post',
    ...        
    datatype: function (postdata) {
        if (!init.data) {
            var request = {
                screenId: settings.screenId,
                pageNumber: postdata.page,
                pageSize: postdata.rows,
                sortColumn: postdata.sidx,
                sortDirection: postdata.sortd,
                date: settings.date
            };
            site.callWs("/MyService", request, function (pageResponse) {
                //WHAT TO CALL HERE TO SET A PAGE OF DATA?
            });
        } else {
            //WHAT TO CALL HERE TO SET A PAGE OF DATA?
            init.data = null;
        }
    }
});

我的数据对象(pageResponse 或 init.data)看起来像这样

数据对象

一旦返回一页数据,我不确定在 jqGrid 上调用什么方法。我考虑过 addJSONData,但是将 JSON 转换回字符串然后使用 EVAL() 似乎效率很低。此外,考虑 addRowData 或设置数据属性,但我很困惑如何指示 jqGrid 我正在做服务器端分页 - 如果我将数据属性设置为一页记录,我需要做什么来告诉 jqGrid总共有 50 条记录,这是 10 页中的第 1 页。

谢谢你的帮助。

4

1 回答 1

0

这是一个用户错误(我的:)。我在 jqGrid 的 loadComplete 中有一些显示/隐藏逻辑,但是调用 addJSONData 时不会触发此事件。

当提供结构正确的 JavaScript 对象时,addJSONData 工作得很好。

于 2013-01-10T15:30:24.363 回答