行分隔符 igx Grid

Posted

技术标签:

【中文标题】行分隔符 igx Grid【英文标题】:Row divider igx Grid 【发布时间】:2021-11-30 03:55:24 【问题描述】:

我有一个带有排序行的 igx 网格。行按日期排序(这是网格中的一列)。所以我有多个具有相同日期的行。如何在更改日期的行之间放置分隔符?这是一个例子:

Row         Date              Some stuff

1           01.01.2021        some data
2           01.01.2021        some data
3           01.01.2021        some data
__________________________________________
4           03.01.2021        other data
5           03.01.2021        other data
__________________________________________

因此,从 4. 行开始,日期已更改,如何以编程方式在 4. 行之前放置一个分隔符(类似于本教程中的内容:https://www.infragistics.com/products/ignite-ui-angular/angular/components/divider)?我如何在 Typescript 中做到这一点?

【问题讨论】:

【参考方案1】:

由于 Angular Grid 的 Ignite UI 是虚拟化的,因此它的记录呈现完全是数据驱动的,因此无法在我能想到的行之间插入任意元素。如您所想,它会与渲染/滚动和导航混为一谈,因此可控制模板区域。

乍一看,您的示例可能可以通过一些数据操作和Conditional Row Styling 使用简单的边框样式来实现。您可以为每一行提供回调以触发类或自定义样式。

但是,由于您已经按日期排序,因此您所描述的场景看起来确实可以通过 Grouping 处理。 Group By 已经是排序的扩展,添加了带有模板标题和展开折叠功能的组。实际上,在custom group by example 下有一个这种确切类型的组的示例:

您应该查看的是表达式,DaySortingStrategy(如果默认值不够),但主要是 groupingComparer,它确定项目是否属于同一组。以下是示例的简化版本:

this.sortingStrategy = DaySortingStrategy.instance(); // or DefaultSortingStrategy.instance()
this.initialExpr = [
    dir: SortingDirection.Asc,
    fieldName: 'OrderDate',
    ignoreCase: true,
    strategy: this.sortingStrategy,
    groupingComparer: (a, b) => 
        const dateA = this.sortingStrategy.getParsedDate(a);
        const dateB = this.sortingStrategy.getParsedDate(b);
        return dateA.day === dateB.day && dateA.month === dateB.month ? 0 : -1;
    
];

绑定到网格的groupingExpressions:

<igx-grid #grid1 [data]="data" [groupingExpressions]="initialExpr">

我怀疑groupingComparer 甚至可以根据您的数据进一步简化。

【讨论】:

以上是关于行分隔符 igx Grid的主要内容,如果未能解决你的问题,请参考以下文章

需要在 AG-Grid 过滤器中使用空格分隔值来返回每个匹配项

如何通过分隔行和列来创建gridview?

如何使水平线分隔标签和输入?

android gridview 行分隔符/分隔符

Mysql 错误分隔符:行分隔符处错误

SQL 加载程序行分隔符覆盖