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