Я использую сетку кендо, отображающую удаленные данные из ответа службы, и хотел бы включить редактирование в ячейке для некоторых столбцов и выполнить некоторые вычисления для других столбцов.После завершения редактирования пользовательское действие (например, кнопка) должно завершить процесс.
В частности, я хотел бы иметь возможность редактировать три столбца ( Title , cfTrade).TradeTotalVatValue , cfTrade.TradeTotalNetValue ) и вычислите столбец ( cfTrade.TradeTotalValue ) из столбцов ( cfTrade.TradeTotalVatValue , cfTradeVTrade.Tot1014 *).
Пожалуйста, найдите мой HTML ниже:
<kendo-grid-column field="Title" title="{{lbl_ColTitle}}" class="editableGridCell"></kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeDate" title="{{lbl_ColTradeDate}}" class="editableGridCell" filter="date">
<ng-template kendoGridCellTemplate let-dataItem>
{{dataItem.cfTrade.TradeDate | date:'dd/MM/yyyy'}}
</ng-template>
<ng-template kendoGridEditTemplate let-dataItem>
<kendo-datepicker [min]="minTradeDate"
[max]="maxTradeDate"
[(value)]="valueTradeDate"
[(ngModel)]="dataItem.date"
name="date"
(focus)="handleTradeDateFocus()">
</kendo-datepicker>
</ng-template>
</kendo-grid-column>
<kendo-grid-column field="cfSupplier.cfTrader.VatNumber" title="{{lbl_ColVatNumber}}"></kendo-grid-column>
<kendo-grid-column field="cfSupplier.Title" title="{{lbl_ColTraderName}}">
<ng-template kendoGridCellTemplate let-dataItem>
{{dataItem.cfSupplier.Title}}
<button aria-label="selectSupplier" *ngIf="isPendingDocument && (mySelection == dataItem.ID)" class="primaryButton" (click)="selectSupplier()"><span class='k-icon k-i-more-horizontal'></span></button> <!--style="display: inline-block; position: absolute; right: 12px"-->
</ng-template>
</kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeTotalQty" title="{{lbl_ColTotalQty}}" filter="numeric"></kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeTotalDiscValue" title="{{lbl_ColDiscAmount}}" filter="numeric" format="{0:n2}"></kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeTotalVatValue" class="editableGridCell" title="{{lbl_ColVatAmount}}" filter="numeric" format="{0:n2}" [editable]="!APsService.isLoading && isPendingDocument" editor="numeric">
<ng-template kendoGridEditTemplate let-dataItem let-column="column" let-formGroup="formGroup">
<kendo-numerictextbox [decimals]="2"
[formControl]="formGroup.get(column.field)"
(focus)="onTradeTotalVatValueFocus(dataItem)"
(blur)="onTradeTotalVatValueBlur(dataItem)"
(valueChange)="onTradeTotalVatValueChange($event)">
</kendo-numerictextbox>
</ng-template>
</kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeTotalNetValue" title="{{lbl_ColNetAmount}}" filter="numeric" format="{0:n2}"></kendo-grid-column>
<kendo-grid-column field="cfTrade.TradeTotalValue" class="editableGridCell" title="{{lbl_ColTotalAmount}}" filter="numeric" format="{0:n2}">
<ng-template kendoGridCellTemplate let-dataItem>
{{dataItem.cfTrade.TradeTotalValue | number:'1.0-2'}}
<span *ngIf="dataItem.cfTrade.Synced" title="{{lbl_Synced}}" class='k-icon k-i-arrow-60-up rightFloat' style="color: green"></span>
</ng-template>
</kendo-grid-column>
Пожалуйста, найдите мои ссылки ниже:
public createFormGroup(dataItem: any): FormGroup {
return this.formBuilder.group({
Title: dataItem.Title,
TradeTotalVatValue: dataItem.cfTrade.TradeTotalVatValue
TradeTotalNetValue: dataItem.cfTrade.TradeTotalNetValue,
TradeTotalValue: dataItem.cfTrade.TradeTotalValue
});
}
//public createFormGroup = (dataItem: any) => new FormGroup({
// 'Title': new FormControl(dataItem.Title),
// 'cfTrade.TradeTotalVatValue': new FormControl(dataItem.cfTrade.TradeTotalVatValue)
//});
Используя мой код, указанный выше, возникает ошибка Ошибка: не удается найти элемент управления с неопределенным атрибутом имени .
Если я не ошибаюсь, ошибка возникает из-за [formControl]="formGroup.get(column.field)"
, так как поле для этого столбцасложный объект (cfTrade.TradeTotalVatValue).Я попытался kendoGridEditTemplate для столбца Заголовок и, кажется, работает должным образом (ошибки не возникает).Как мне достичь желаемой функциональности?
Заранее спасибо.