【问题标题】:SlickGrid re-apply/fix filter after sortSlickGrid 排序后重新应用/修复过滤器
【发布时间】:2013-01-04 15:46:24
【问题描述】:

我正在树上构建/展开折叠 SlickGrid 示例找到 here

我已经添加了排序(在 % Complete 列上),但是一旦用户触发排序,过滤器就不会更新 - 展开/折叠图标不起作用并且位于错误的位置。

排序后如何重新应用文件管理器? 我已经尝试使用下面的代码,但它不起作用:

 dataView.setFilter(myFilter);
 grid.render();

你可以看看我有什么here

更新 我注意到当我打开 jsFiddle 页面时,html 部分可能会显示为空白,如果您刷新页面,代码似乎会出现。

更新 我设法创造了一个丑陋的工作。你可以找到一个更新的例子here

基本上我对数据进行排序,然后销毁并重新创建网格。我仍然想知道是否有更优雅的解决方案。

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    您的小提琴链接实际上并没有为我的机器运行,但是通过阅读您的源代码,您要么必须重建 DataView,要么必须强制 DataView 触发 fitler 重新创建所有缩进并折叠/展开元素。

    强制刷新的最简单方法是调用grid.invalidate(),然后调用grid.render()。如果这不起作用,您可以在对每个元素进行排序时调用updateItem()。其中任何一个都会强制网格重新计算行索引和这些索引的视觉效果。

    请注意,您必须小心排序,因为父关系不会强制行排序 - 也就是项目 (id 2) 的子 (id 5) 可以诉诸其父级上方的第 1 行并且折叠父级仍然会使其消失。看起来您的排序算法已经处理了这个问题,但这对于其他阅读问题的人来说很重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2013-09-11
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多