2017-06-19 34 views
0

我有一個劍道角網格,其中一列被綁定到一個對象,所以編輯器是一個下拉列表。我想按這個對象的屬性來排序,而不是對象本身,但是沒有看到任何明顯的方法來做到這一點。我在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.Name排序已更改。此外,字段標題旁邊的箭頭指示符不會顯示,因爲它們會出現在名爲CabinetSupplier而不是CabinetSupplier.Name的字段旁邊。

請幫忙。

回答

0

我從Telerik的優秀支持團隊的答案,所以我將分享的情況下,它可以幫助其他人你的sortby。他們說該列的字段設置用於排序,過濾和分組等操作,因此在我的場景中,我應該將其設置爲CabinetSupplier.Name。由於我使用模板來顯示/編輯數據,我仍然會將該對象作爲代碼的值傳遞給對象。

0

您需要sortChangesortable在您的網格中。

[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/

+0

嗨Jonnysai,謝謝你的回答。我非常感謝你的幫助,但我一直在尋找更通用的解決方案,所以我編輯了我的文章,希望能夠使其更加清晰。 – LanceM