如果我在大于1的页面上进行搜索,并且如果从搜索返回的项目数等于pagesize,则页面不会翻回上一页并显示错误的页码。
例如,如果我有5个项目,页面大小设置为4.如果我在第二页上搜索返回4个项目,那么页面将不会翻到第1页,网格会显示页面2的1。
如果我改变example4,我也会得到同样的错误 - http://mleibman.github.io/SlickGrid/examples/example4-model.html
替换此代码 -
for (var i = 0; i < 50000; i++) {
var d = (data[i] = {});
d["id"] = "id_" + i;
d["num"] = i;
d["title"] = "Task " + i;
d["duration"] = "5 days";
d["percentComplete"] = Math.round(Math.random() * 100);
d["start"] = "01/01/2009";
d["finish"] = "01/05/2009";
d["effortDriven"] = (i % 5 == 0);
}
用这个 -
var x;
for (var i = 0; i < 5; i++) {
var d = (data[i] = {});
if (i == 0)
x = "1";
if (i == 1)
x = "11";
if (i == 2)
x = "111";
if (i == 3)
x = "1111";
if (i == 4)
x = "2";
d["id"] = "id_" + i;
d["num"] = i;
d["title"] = "Task " + x;
d["duration"] = "5 days";
d["percentComplete"] = Math.round(Math.random() * 100);
d["start"] = "01/01/2009";
d["finish"] = "01/05/2009";
d["effortDriven"] = (i % 5 == 0);
}
添加此行 -
dataView.setPagingOptions({pageSize: 4});
转到第2页并搜索任务1.它应该显示第1页,共1页。
答案 0 :(得分:0)
我认为你的rowCount没有更新。你在脚本上添加了这个吗?
dataView.onRowCountChanged.subscribe(function (e, args) {
grid.updateRowCount();
grid.render();
});
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidateRows(args.rows);
grid.render();
});
更新:在您的slick.dataview.js上添加此代码。在第750行附近找到这个
var paged;
if (pagesize) {
if (filteredItems.length < pagenum * pagesize) {
pagenum = Math.floor(filteredItems.length / pagesize);
}
//.. add this code
// START
if (filteredItems.length == pagenum * pagesize && pagenum > 0)
pagenum --;
// END
paged = filteredItems.slice(pagesize * pagenum, pagesize * pagenum + pagesize);
} else {
paged = filteredItems;
}