我有一个剑道网格,它从 MVC 控制器接收数据。网格显示正确,其中 1 列可编辑。这是网格首次渲染时的样子:
“缩减”列是可编辑列。我需要允许用户在“减少”列的单元格中输入一个值,并根据输入的值,将最终评估计算为原始评估 - 用户输入的值。
这就是剑道网格代码的样子:
@(Html.Kendo().Grid<TaxCertApp.ViewModels.SettlementMemoViewModel>()
.Name("SettlementMemodGrid")
.Columns(columns =>
{
columns.Bound(nr => nr.TaxYear).Width(50).Title("Tax Year");
columns.Bound(nr => nr.OriginalAssessment).Width(100).Title("ORIG. ASSESSMENT").Format("{0:##########0}");
columns.Bound(nr => nr.Reduction).Width(100).Title("REDUCTION").EditorTemplateName("Integer");
columns.Bound(nr => nr.FinalAssessment).Width(100).Title("FINAL ASSESSMENT").Format("{0:###,###,##0}");
columns.Bound(nr => nr.Rate).Width(100).Title("RATE").EditorTemplateName("Currency");
columns.Bound(nr=> nr.RefundSavings).Width(100).Title("REFUND/SAVINGS").Format("{0:###,###,##0}");
columns.Bound(e => e.Type).Width(100).EditorTemplateName("TypeList").Title("TYPE (R S R/S)");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Scrollable()
.Events(e => e.Edit("OnEdit"))
.Events(ev => ev.Change("OnChange"))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Model(model =>
{
model.Id(n => n.TaxYear);
model.Field(n => n.OriginalAssessment).Editable(false);
model.Field(n => n.Reduction).Editable(true);
model.Field(n => n.FinalAssessment).Editable(false);
model.Field(n => n.Rate).Editable(true);
model.Field(n => n.RefundSavings).Editable(true);
model.Field(n => n.Type).Editable(true);
})
.PageSize(20)
.Read(read => { read.Action("SettlementMemoFetchGrid", "Forms").Data("BuildObjectGridSettMemo"); })
)
)
当我单击“缩减”列中的单元格时,将调用 javascript 函数 OnEdit,但它是在对列中的值进行任何编辑之前调用的。 javascript 函数 OnChange 永远不会被执行。
如何单击“减少”列中的单元格,输入一个值,按 Tab 键关闭该列,然后计算最终评估中的值并将其显示在网格中?
谢谢你。
仅当网格可选时才会触发更改事件: https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/events/change
对于 MVC 服务器包装器,我想它会是这样的。
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Row)
.Type(GridSelectionType.Cell))
https://docs.telerik.com/aspnet-mvc/api/kendo.mvc.ui. Fluent/gridbuilder
希望有帮助。