ignite-ui-angular - 无法从 IgniteUI / igniteui-angular 网格获取排序事件
问题描述
我需要在网格上应用字母数字排序,但无法从网格中获取排序事件。
解决方案
可以使用三个事件发射器,主题主题。
排序- 在应用排序表达式之前发出
sortDone - 排序完成后发出
<igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingDone)="sortingDone($event)">
sortExpressionsChange - 在执行排序之前发出
使用DefaultSortingStrategy
算法进行排序。任何IgxColumnCOmponent
或ISortingExpression
可以使用ISortingStrategy
.
您可以通过扩展默认策略或实现来定义自己的排序策略ISortingStrategy
:
- 示例
CustomSortingStrategy
export class CustomSortingStrategy extends DefaultSortingStrategy {
...
}
...
const strategy = CustomSortingStrategy.instance();
grid.sort({fieldName: 'Name', dir: SortingDirection.Asc, ignoreCase: true, strategy: CustomSortingStrategy.instance()});
- 实施示例
ISortingStrategy
:
export class SortByParityComponent implements ISortingStrategy {
public sort(data: any[], fieldName: string, dir: SortingDirection) {
const key = fieldName;
const reverse = (dir === SortingDirection.Desc ? -1 : 1);
const cmpFunc = (obj1, obj2) => this.compareObjects(obj1, obj2, key, reverse);
return data.sort(cmpFunc);
}
protected sortByParity(a: any, b: any) {
return a % 2 === 0 ? -1 : b % 2 === 0 ? 1 : 0;
}
protected compareObjects(obj1, obj2, key: string, reverse: number) {
const a = obj1[key];
const b = obj2[key];
return reverse * this.sortByParity(a, b);
}
}
...
grid.sort({
fieldName: 'ID',
dir: SortingDirection.Desc,
ignoreCase: false,
strategy: new SortByParityComponent()
});
推荐阅读
- javascript - JavaScript 数组过滤器返回未定义
- php - 我遇到了这个短代码插件的问题。警告:非法字符串偏移“标题”
- sql - Postgresql 复制槽错误 postgresql
- python - 使用 blob 链接下载数据
- java - 检查字符串数字数组是否包含符号
- python - 我正在尝试读取文件夹路径,但我收到 'str' has no attribute 'dir' 错误消息
- azure-web-app-service - Azure 应用服务不反映来自 ftp 的文件更改
- matlab - 我的泰勒级数图代码 cos(2x) 而不是 Matlab 中的 cos(x)
- javascript - 单击相应的删除按钮时,如何在每个列表项旁边添加按钮以删除该项目
- mongodb - MongoDB获取数组中当前元素的索引