0

在 angular slickgrid 中,按列排序 asc/desc 工作正常。但删除按列标题菜单排序无法正常工作。当我删除排序时,数据集应重置为最初加载的数据视图。但它保持最后的排序顺序。当我清除所有按网格菜单排序时,它工作正常。在这里,我将我的问题案例分享为 gif 文件,请任何人帮助我解决此问题。

在此处输入图像描述

4

1 回答 1

1

你可以打电话dataView.reSort();强制度假村,这似乎是你要找的。网格菜单调用dataView.refresh();,我不确定这是否会触发reSort核心库,也许它会触发。标题菜单仅删除列排序而不知道是否还有任何排序,它基本上不会跟踪剩下多少排序并且它不会调用 areSort也不会 arefresh但你可以自己调用它只会告诉DataView 嘿嘿,请去掉这个列的排序。

现在要向标题菜单添加一个额外的过程,您需要订阅clear-sort标题菜单命令,您可以这样做(我没有测试它,但它应该可以工作)

this.gridOptions = {
   headerMenu: {
     onCommand: (e, args) => {
       if (args.command === 'clear-sort') {
         const dataView = args.grid.getData();
         const sortCols = args.grid.getSortColumns();

         // add logic to know if this is last column sort 
         if (sortCols.length === 0) {
           // then call "refresh" or "reSort" either or
           // dataView.refresh();
           dataView.reSort();

           // if that doesn't work then try to call lib SortService from (onAngularGridCreated)
           // this.angularGrid.sortService.clearSorting();
         }
       }
   }
}  

请注意,我是 Angular-Slickgrid 的作者,这个解决方案不是库本身的一部分,我可能会稍后添加它,但现在这应该是一个可能的临时解决方案。

于 2020-06-20T18:16:55.343 回答