Angular slickgrid column wise 删除排序选项无法正常工作

Angular slickgrid column wise remove sort option not working properly

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

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

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

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 的作者,此解决方案不是库本身的一部分,我可能会在稍后添加它,但目前这应该是一个可能的临时解决方案。