SlickGrid在排序后重新应用/修复过滤器
SlickGrid re-apply/fix filter after sort
我是建立在树/扩展/折叠SlickGrid的例子在这里找到。
我已经给它添加了排序(在% Complete列上),但是一旦排序被用户触发,过滤器就不会更新——展开/折叠图标不起作用并且在错误的地方。
排序后如何重新应用筛选器?我试过使用下面的代码,但它不起作用:
dataView.setFilter(myFilter);
grid.render();
你可以看到我这里有很多
我注意到当我打开jsFiddle页面的html部分可以显示为空白,如果你刷新页面的代码似乎出现。
我设法创造了一个丑陋的工作环境。你可以在这里找到一个更新的例子
基本上,我对数据进行排序,然后销毁并重新创建网格。我还是想知道是否有更优雅的解决方法。你的fiddle链接实际上不运行在我的机器上,但是从阅读你的源代码,你要么必须重建DataView,要么你必须强制你的DataView触发过滤器重新创建所有的缩进和折叠/展开元素。
强制刷新的最简单方法是调用grid.invalidate()
,然后调用grid.render()
。如果这不起作用,你可以在每个元素上调用updateItem()
,因为它是排序的。这两种方法都将强制网格重新计算行索引和这些索引的视觉效果。
注意,你必须小心排序,因为父关系不是强制的行排序——也就是说,一个项目(id 2)的子(id 5)可以诉诸于其父(id 2)上面的第1行,折叠父仍然会使它消失。看起来你的排序算法已经处理了这个问题,但是对于其他阅读这个问题的人来说,这是很重要的一点。
相关文章:
- 角度ng重复显示应用过滤器之前的数据
- Vue js 在输入字段中对 v-model 应用过滤器
- JQGridPageing在通过过滤器工具栏应用过滤器后非常慢
- 如何在嵌套的ngRepeat中对第二个ngRepeat应用过滤器
- 在应用过滤器之前,我需要隐藏所有过滤器容器数据
- DC.js 应用过滤器后热图颜色范围未更新
- 应用过滤器后元素被删除
- free-jqgrid:保存、加载和应用过滤器数据的更简单方法,包括过滤器工具栏文本和页面设置
- 在 ExtJS 4.1 的 Ext.Data.TreeStore 中应用过滤器
- 如何在 Vuejs 组件中应用过滤器
- AngularUI:在应用过滤器的情况下正确更新两个列表之间的模型
- Angular.js-使用间隔应用过滤器
- jQuery点击按钮don'在剑道网格中应用过滤器后无法工作
- jQuery在应用过滤器后调整窗口大小
- 使用jQuery对选择框应用过滤器
- 当应用过滤器时,DC.js复合图表不更新
- 如何使用ng-repeat为2维json对象应用过滤器
- AngularJS在控制器中应用过滤器
- 是否有可能在特定维度上应用过滤器
- 从不同的控制器应用过滤器到ngRepeat