【问题标题】:SlickGrid custom filter is iteration thru already filtered result setSlickGrid 自定义过滤器通过已过滤的结果集进行迭代
【发布时间】:2021-02-16 21:23:10
【问题描述】:

实现的自定义过滤器运行良好,但我遇到了 SlickGrid js 的性能问题。在应用自定义过滤器并向网格添加新的整体后,过滤器将再次应用于整个(已经)过滤的结果集。在我看来,过滤器应该只应用于添加的项目。

我查看了文档,但找不到任何提示如何控制这种行为。

有没有人有任何想法或面临同样的问题?

提前致谢

【问题讨论】:

    标签: javascript performance datagrid slickgrid


    【解决方案1】:

    假设你使用的是DataView,那么过滤算法本质上是:

      var idx = 0;
      for (var i = 0, ii = items.length; i < ii; i++) {
        if (filter(items[i], filterArgs, dataView, i)) {
          filteredItems[idx++] = items[i];
        }
      }
    

    filteredItems var 是 DataView 的本地变量,因此您需要修改 DataView 并使用 getter 公开它,然后:

        if (filter(items[newItemIndex], filterArgs, dataView, newItemIndex)) {
          filteredItems[filteredItems.length] = items[newItemIndex];
        }
    

    或者您可以为 DataView 添加一个专门针对此用例的新方法。

    或者您可以在addItem 方法中添加第二个参数,例如addToFilter,以便在出现的refresh() 之前执行此功能。

    【讨论】:

      猜你喜欢
      • 2013-04-11
      • 2017-03-09
      • 2022-11-18
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2012-01-05
      相关资源
      最近更新 更多