如何禁用对 Ag-grid 中特定列的排序?

Nee*_*ain 7 angularjs ag-grid

我在我的一个 AngularJs 项目中使用https://www.ag-grid.com/。我的要求是在任何分组发生时禁用任何列的排序。

我知道我们可以sorting/filtering使用以下配置禁用单列:

colDef.suppressMenu = true
colDef.suppressSorting = true <--- this i can set up while giving column definition
Run Code Online (Sandbox Code Playgroud)

但是如何在特定条件下动态进行,有关更多说明,请查看下图 在此处输入图片说明

在此,我按国家/地区对网格进行分组并扩大爱尔兰国家/地区,但现在我不禁用对任何参数的排序,并在删除分组属性时再次启用它。

有没有办法实现这一点,请告诉我,如果已经存在任何重复的问题,请在评论部分添加。

谢谢

Fed*_*cia 10

抑制排序的属性现在是

可排序:假

https://www.ag-grid.com/javascript-grid-sorting/


Nee*_*ain 2

最后,我解决了问题:),添加答案,这样可能会帮助其他人

注意:我不依赖 Ag-Grid 分组,而是从后端获取分组数据,因此以下详细信息可能会根据仅 Ag-Grid 的情况而发生变化

Ag-Grid提供了各种事件监听器,其中之一是columnRowGroupChanged

所以我注册了这个监听器:

vm.gridOptions.api.addEventListener("columnRowGroupChanged", vm.updateRowData);
Run Code Online (Sandbox Code Playgroud)

然后,在updateRowData我创建 headerRow(分组后将由 Ag-Grid 使用)的方法中,我当时还配置是否排序:

vm.updateRowData = function (groupedColumnInfo) { 
                                /\
                                ||
                                ||
                           Column Information on which grouping has been done

............
............
 // Some Processing to get required details and finally setting the header again
............
............
vm.headerData = {
    headerName: groupingAttributeItem.label,
    field: fieldName,
    width: 150,
    headerClass: 'groupable-header',
    cellClass: 'groupable-cell p-xs',
    key: groupingAttributeItem.key,
    sort: (params.sortingInfo && params.sortingInfo.colId === groupingAttributeItem.key) ? params.sortingInfo.sort : '',
    suppressSorting: groupedColId ? true : false <--- deciding factor 
};

  // *Deciding factor* line checks that if some grouping has been done
 // if NO then don't suppress sort for that column otherwise enable sorting
}
Run Code Online (Sandbox Code Playgroud)

注意:默认情况下,所有列都启用排序,因此我们必须显式禁用它。

这只是我完整代码库的片段,因此跳过了如何获取标签和其他内容。

希望它可以帮助某人谢谢......