我在我的一个 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)
在此,我按国家/地区对网格进行分组并扩大爱尔兰国家/地区,但现在我不禁用对任何参数的排序,并在删除分组属性时再次启用它。
有没有办法实现这一点,请告诉我,如果已经存在任何重复的问题,请在评论部分添加。
谢谢
最后,我解决了问题:),添加答案,这样可能会帮助其他人
注意:我不依赖 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)
注意:默认情况下,所有列都启用排序,因此我们必须显式禁用它。
这只是我完整代码库的片段,因此跳过了如何获取标签和其他内容。
希望它可以帮助某人谢谢......
| 归档时间: |
|
| 查看次数: |
10031 次 |
| 最近记录: |