【发布时间】:2017-06-19 20:57:28
【问题描述】:
我有一个 Kendo Angular 网格,其中一列绑定到一个对象,因此编辑器是一个下拉列表。我想按此对象的属性而不是对象本身进行排序,但看不到任何明显的方法可以做到这一点。我在 kendo-grid-column 中寻找“sortby”属性,因此我可以输入“CabinetSupplier.Name”之类的内容(CabinetSupplier 是对象,Name 是属性)。下面是我的专栏配置:
<kendo-grid-column field="CabinetSupplier" title="Cabinet Supplier" sort>
<ng-template kendoGridFilterCellTemplate let-filter>
<kendo-dropdown-filter [filter]="filter"
[data]="cabinetsService.cabinetSuppliers | filter:[{Disabled: false}]"
textField="Name"
valueField="Id"
(filterSelectionChange)="handleFilterSelectionChange($event)"
filterBy="CabinetSupplier.Id">
</kendo-dropdown-filter>
</ng-template>
<ng-template kendoGridCellTemplate let-dataItem>
{{dataItem.CabinetSupplier.Name}}
</ng-template>
</kendo-grid-column>
我希望有一个通用的解决方案,而不是:
protected sortChange(sort: SortDescriptor[]): void
{
sort.map((item) =>
{
if (item.field == "CabinetSupplier")
{
item.field = "CabinetSupplier.Name";
}
});
this.sort = sort;
}
除了是非通用的之外,我还必须考虑这样一个事实,即每次单击标题时,它都会尝试按 CabinetSupplier 进行排序,因此会创建一个需要删除的新排序和 CabinetSupplier。名称排序已更改。此外,字段标题旁边的箭头指示符也不会出现,因为它们会出现在名为 CabinetSupplier 而不是 CabinetSupplier.Name 的字段旁边。
请帮忙。
【问题讨论】:
标签: angular kendo-grid