【发布时间】:2019-12-29 09:42:22
【问题描述】:
我正在为 aggrid 使用客户端行模型,但我想按服务器端排序和过滤,我不知道如何防止按 aggrid 本身排序和过滤的行为。
【问题讨论】:
-
我有一个类似的问题,目前最好的解决方案是实现自定义标题组件,而不是监听这些组件的点击并实现自定义排序。我发现这种方法更难的是设置/重置标题单元格的排序状态,特别是当我想按不同的列排序时,但这是可行的。
我正在为 aggrid 使用客户端行模型,但我想按服务器端排序和过滤,我不知道如何防止按 aggrid 本身排序和过滤的行为。
【问题讨论】:
对于排序: 我遇到了同样的问题,我使用模拟排序比较器做了一个简单的技巧。
为 columnsDefs 数组中的每个列对象添加一个返回 0 的“比较器”属性,如:
columnDefs = columnDefs.map(colDef => ({
...colDef,
comparator: () => 0
}));
这样我们说自定义排序比较器返回相同的数据,所以你仍然可以从排序图标中受益。
此外,为了从服务器获取排序后的数据,您只需要监听排序更改事件,例如:
(sortChanged)="onSortChanged($event)"
然后在 onSortChanged:
onSortChanged(event){
const sortModel = this.gridApi.getSortModel();
service.getDataFromServer(sortModel);
refreshGrid(); // If needed
}
【讨论】: