【发布时间】:2013-06-12 19:23:51
【问题描述】:
我正在使用 jqGrid 4.5.2 版和 jquery 1.9.1 以及 MVC 4。
我使用的网格总共有大约 2000 行,我一次显示 100 行。 我正在使用具有以下网格定义的虚拟网格滚动,而不是分页:
$("#colorsGrid").jqGrid({
url: '@Url.Action("Colors")',
//datatype: 'xml',
datatype: 'json',
colNames: ['id', 'RGB', 'FS', 'RAL', 'Humbrol', 'Revell', 'Tamiya', 'RLM', 'Vallejo', 'Testors / Model Master','ANA','Games Workshop / Citadel'],
colModel: [
{ name: 'id', index: 'id', hidden: true },
{ name: 'RGB', sorttype: rgbColorSorter, formatter: rgbColumnFormatter, width: 70 },
{ name: 'FS', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'RAL', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'Humbrol', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'Revell', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'Tamiya', sorttype: tamiyaColorSorter, formatter: colorFormatter, width: 200 },
{ name: 'RLM', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'Vallejo', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'Testors / Model Master', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'ANA', sorttype: colorSorter, formatter: colorFormatter, width: 200 },
{ name: 'GamesWorkshop', sorttype: colorSorter, formatter: colorFormatter, width: 200 }
],
rowNum: 50,
scroll: 1,
emptyrecords: "No colors found",
loadonce: false,
autowidth: false,
sortable: true,
afterInsertRow: afterInsertRowFunction,
multipleSearch: true,
ignoreCase: true,
postData: { filterText: function () { return $('#colorFilter').val(); }},
loadComplete: function () {
if (!resizeGridOnLoadComplete) {
resizeGridOnLoadComplete = true;
resizeGrid();
}
}
函数 afterInsertRowFunction 只为行设置一些 css 样式。 resizeGrid 函数只在网格上调用 setGridHeight 来动态固定高度。
在控制器端,我只返回行数,而不是 Request.QueryString 参数中请求的整个数据集,以及记录和页面的总数。简例:
{"page":1,"total":38,"records":1918,"rows":[{"id":1,"cell":["1","654037","^10075^10075^^~","","","","","","","","4F2E26^510^510 - Maroon^gloss^Pre/Early WWII~",""]},{"id":2,"cell":["2","7c3925","^10076^10076 - Coast Guard Deck Red, Metallic Red-Brown^^~","","","","","","","","",""]},
我的问题是发生以下情况: 1. 在加载页面时,jqGrid 发送获取第 1 页的 ajax 请求 2.滚动过去最初的 50 行后,jqgrid 发送一个 ajax 请求以获取页码。 2 3.滚动超过接下来的 50 行后,jqgrid 再次发送第 2 页而不是第 3 页的 ajax 请求
如果我继续滚动,那么 jqGrid 将发送一个对第 3 页的请求(现在应该是第 4 页)。
由于重复请求和发回相同的数据,它弄乱了网格。
我尝试过的事情: xml 或 json 格式。 保留 jqGrid 元素的最小设置。 rowNum 中的行数不同。 滚动参数为“true”。
我看到人们提到了一些非常相似的东西,但它是两年零两个以前的 jqGrid 版本,并且已经修复。
为什么 jqGrid 为同一页面发送重复请求?
【问题讨论】: