每行DevExtreme自定义下拉列表

时间:2020-10-29 20:14:34

标签: angular devextreme

我在Angular中有一个devextreme网格,其中有1列,每行都需要下拉菜单,但是下拉菜单特定于该行,因此该行的数据源包括该下拉菜单的数据源。不幸的是,它不允许我在下拉菜单中使用[dataSource]="data.rowDataSourceInfo"之类的东西(它什么也不显示,也没有控制台错误)。有谁知道如何使它正常工作?我正在使用Devextreve版本20.1.7和Angular版本9.2.4。

1 个答案:

答案 0 :(得分:0)

我终于弄清楚了如何使它工作。

在模板内,您将需要在列上设置查找并在编辑单元格模板上进行设置。请注意,查询中的数据源具有整个网格的所有产品名称,这比任何东西都更多地用于过滤列。编辑单元格模板中的数据源仅具有那些适用于网格的产品名称。

<dxi-column dataField="productId" dataType="string" caption="Product Name"  [allowEditing]="true"   editCellTemplate="changeProductNameEditor" >
   <dxo-lookup [dataSource]="allProductNames" valueExpr="productId" displayExpr="productName"></dxo-lookup>
</dxi-column>

<div *dxTemplate="let cellInfo of 'changeProductNameEditor'">
  <dx-select-box
    [items]="cellInfo.data.availableProductNames"
    [value]="cellInfo.value"
    displayExpr="productName"
    valueExpr="productId"
    (onValueChanged)="updateProductName($event, cellInfo)"
  >
</dx-select-box>
</div>

在该组件内,您还必须添加一个方法来处理更改后的值:

updateProductName(eventData, cellInfo: any) {
  if (cellInfo.setValue) {
    cellInfo.setValue(eventData.value);
  }
}