1

我正在此处找到的树/展开折叠 SlickGrid 示例上进行构建。

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

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

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

你可以看到我在这里的小提琴

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

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

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

4

1 回答 1

0

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

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

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

于 2013-04-25T17:10:54.090 回答