由于 Angular Grid 的 Ignite UI 是虚拟化的,因此它的记录呈现完全是数据驱动的,因此无法在我能想到的行之间插入任意元素。如您所想,它将与渲染/滚动和导航混为一谈,因此可控制模板区域。
乍一看,您的示例可能可以通过一些数据操作和Conditional Row Styling使用简单的边框样式来实现。您可以为每一行提供回调以触发类或自定义样式。
但是,看到您已经按日期排序,看起来您所描述的场景确实可以通过 Grouping 处理。Group By 已经是排序的扩展,添加了带有模板标题和展开折叠功能的组。实际上,在自定义组下有一个确切类型的组示例:
您应该查看的是表达式,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
甚至可以根据您的数据进一步简化。