【发布时间】:2016-04-27 09:50:01
【问题描述】:
从客户端传递数据时是否可以覆盖 jqgrid 的行为?我知道这是从服务器获取数据时,但我的问题是不同的。 这是 jsfiddle 链接:http://jsfiddle.net/fott25/wdvsjwrg/
我也会在这里发布我的代码,我的 html:
<table id="list"></table>
<div id="pager"></div>
这是我的 javascript,其中包含数据和 jqgrid 初始化:
var myData = [{
id: 1,
name: "aaz"
}, {
id: 2,
name: "bbz"
}, {
id: 3,
name: "ccz"
}, ];
$("#list").jqGrid({
datastr: myData,
datatype: "jsonstring",
jsonReader: {
page: function(datastr) {
return 2;
},
total: function(datastr) {
return 10;
},
},
colNames: ["Id", "Name"],
colModel: [{
name: "id",
index: "id",
sorttype: "int"
}, {
name: "name",
index: "name"
}],
rowNum:1,
caption: "Viz Test",
pager: '#pager',
});
这是代码的结果:
如您所见,我尝试在 jsonReader 属性中将总页数设置为 10,但 jqgrid 忽略了该属性。将页面设置为第二个效果很好。 是否可以覆盖总页码?
编辑 #1:我尝试将 lastpage 设置为 10,但它不起作用
【问题讨论】:
-
您尝试实施哪种方案?为什么要使用
datatype: "jsonstring",这与带有错误total(lastpage) 值的datatype: "local"几乎相同?如果用户单击下一页按钮,则将尝试显示 以前加载的本地数据,这是不可能的。必须使用onPaging回调来解决问题。一般来说,可以使用updatepager回调将寻呼机设置为任何值,但我不确定网格是否会希望你在那之后期待。可能是你走错了方向。您尝试实现什么场景? -
我们在我们的应用程序中进行了某种过滤,我们填充请求数据并通过 ajax 请求发送它以从服务器获取数据。来自服务器的数据包括 rows 和 numberOfPages 值。之后,我们必须使用该数据填充数据网格并将其设置为 jqgrid,因此我必须使用 jsonstring 或 local 和 datastr。我的目标是实现 onPagingEvent 以便它调用 javascript 函数来获取数据并使用新数据重新创建 jqgrid。我知道这是一种反模式,但不幸的是,这似乎是目前唯一的方法。你有什么建议吗?我会看看 updatepager,也许我错过了什么
-
只有当需要显示的总行数非常大(至少>10000)时,才应该实施这种方案。 The demo 演示了本地分页排序和过滤4000行13列20行/页网格的性能。 Another demo 使用 40000 行并且在 Chrome 中仍然足够快。到 Web 服务器的典型往返可能需要 更多时间 作为本地分页。想一想。
-
the old answer 提供了
updatepager的用法示例。我忘了提到 jqGrid 的行为可能取决于您使用的 jqGrid 版本以及使用的 fork 版本。我开发了free jqGrid fork,我可以推荐你。它在每个已发布版本的 README 和 the wiki 中都描述了许多增强功能。 -
不幸的是,我们无法将所有数据传输到客户端,这不是因为 jqgrid,而是因为后端、数据库和网络连接到我们的生产服务器的速度。非常感谢您的努力,我会更多地查看您提供的链接。
标签: javascript html jqgrid