【问题标题】:Not able to get sorting event from IgniteUI / igniteui-angular grid无法从 IgniteUI / igniteui-angular 网格获取排序事件
【发布时间】:2021-05-13 04:39:13
【问题描述】:

我需要在网格上应用字母数字排序,但无法从网格中获取排序事件。

【问题讨论】:

    标签: ignite-ui-angular igx-grid


    【解决方案1】:

    可以使用三个事件发射器,主题为topic

    使用DefaultSortingStrategy 算法执行排序。任何IgxColumnCOmponentISortingExpression 都可以使用ISortingStrategy 的自定义实现。

    您可以通过扩展默认策略或实现ISortingStrategy 来定义自己的排序策略:

    1. CustomSortingStrategy 为例
    export class CustomSortingStrategy extends DefaultSortingStrategy {
    ...
    }
    
    ...
    const strategy = CustomSortingStrategy.instance();
    
    grid.sort({fieldName: 'Name', dir: SortingDirection.Asc, ignoreCase: true, strategy: CustomSortingStrategy.instance()});
    
    1. 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()
    });
    

    Here you can find a working sample with CustomSortingStrategy.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多