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,而折叠父项仍会使其消失。看起来你的排序算法已经解决了这个问题,但是对于其他阅读这个问题的人来说,这是一个重要的问题