搜索的Slickgrid分页问题 - 当pagesize =第二页上的搜索项目数时,页码是错误的

时间:2016-08-09 00:02:37

标签: slickgrid

如果我在大于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页。

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;
  }