【问题标题】:Slickgrid paging issue for search - page number is wrong when pagesize = search item count on second page搜索的 Slickgrid 分页问题 - 当 pagesize = 第二页上的搜索项目计数时,页码错误
【发布时间】:2016-08-09 00:02:37
【问题描述】:

如果我在大于 1 的页面上进行搜索,并且从搜索返回的项目数等于页面大小,则该页面不会翻回上一页并显示错误的页码。

例如,如果我有 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。它应该是 Showing Page 2 of 1。

【问题讨论】:

  • 谢谢winghei。那行得通。

标签: slickgrid


【解决方案1】:

我认为您的 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;
  }

【讨论】:

  • 我已经添加了这个。请参阅我编辑的问题。 // 连接模型事件以驱动网格 dataView.onRowCountChanged.subscribe(function (e, args) { grid.updateRowCount(); //grid.invalidate(); // 添加 grid.render(); }); dataView.onRowsChanged.subscribe(function (e, args) { grid.invalidateRows(args.rows); //grid.invalidate(); // 添加了 grid.render(); });
  • 看起来像一个错误。您可以通过在 slick.dataview.js 上添加此代码来解决此问题。在第 750 行找到这一行 var paged; if (pagesize) { if (filteredItems.length 0) pagenum --; // END paged = filteredItems.slice(pagesize * pagenum, pagesize * pagenum + pagesize); } 其他 { 分页 = 过滤项目; }
猜你喜欢
  • 1970-01-01
  • 2013-03-05
  • 2014-06-11
  • 1970-01-01
  • 2014-02-13
  • 2011-08-12
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多