我需要使用 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 页。
谢谢你的帮助。