【问题标题】:Sorting by propery of object in Kendo Angular Grid按 Kendo Angular Grid 中对象的属性排序
【发布时间】: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


    【解决方案1】:

    我从 Telerik 出色的支持团队那里得到了答案,所以我会分享它以防它帮助其他人。他们说该列的字段设置用于排序,过滤和分组等操作,所以在我的场景中我应该将它设置为CabinetSupplier.Name。当我使用模板来显示/编辑数据时,我仍然会获取对象作为代码中的值。

    【讨论】:

    • 非常感谢您在支持下进行检查。也帮助我解决了我的问题
    【解决方案2】:

    你需要sortChange sortable 在你的网格中。

    [sortable]="{
                allowUnsort: allowUnsort,
                mode: multiple ? 'multiple' : 'single'
                }"
              [sort]="sort"
              (sortChange)="sortChange($event)"
    

    在 sortChange 函数中,您可以使用 CabinetSupplier.Name 进行排序

    更多信息 http://www.telerik.com/kendo-angular-ui/components/grid/sorting/

    【讨论】:

    • 您好 Jonnysai,感谢您的回答。非常感谢您的帮助,但我一直在寻找更通用的解决方案,因此我编辑了我的帖子以希望使其更清晰。
    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 2018-03-08
    • 2011-01-28
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多