Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分拣后重新应用/修复过滤器_Javascript_Slickgrid - Fatal编程技术网

Javascript 分拣后重新应用/修复过滤器

Javascript 分拣后重新应用/修复过滤器,javascript,slickgrid,Javascript,Slickgrid,我正在树上构建/展开找到的网格示例 我已经添加了排序(在%完成列上),但是一旦用户触发排序,过滤器就不会更新-展开/折叠图标不起作用,并且位于错误的位置 排序后如何重新应用文件管理器? 我尝试过使用下面的代码,但不起作用: dataView.setFilter(myFilter); grid.render(); 你可以看到我的一把小提琴 更新 我注意到,当我打开JSFIDLE页面时,html部分可能会显示为空白,如果刷新页面,代码似乎会出现 更新 我已经设法创造了一个丑陋的工作。您可以找到

我正在树上构建/展开找到的网格示例

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

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

 dataView.setFilter(myFilter);
 grid.render();
你可以看到我的一把小提琴

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

更新 我已经设法创造了一个丑陋的工作。您可以找到一个更新的示例


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

您的fiddle链接实际上并没有为我的机器运行,但是从阅读您的源代码开始,您必须重建DataView,或者您必须强制DataView触发fitler来重新创建所有缩进和折叠/展开元素

强制刷新的最简单方法是调用
grid.invalidate()
,然后调用
grid.render()
。如果这不起作用,可以在排序后对每个元素调用
updateItem()
。这两种情况都会迫使网格重新计算行索引以及这些索引的可视值

请注意,您必须小心排序,因为父关系不是在行排序时强制执行的——也就是说,项(id 2)的子项(id 5)可以重用于其父项上方的行1,而折叠父项仍会使其消失。看起来你的排序算法已经解决了这个问题,但是对于其他阅读这个问题的人来说,这是一个重要的问题