我在我的javascript函数中调用grid.SaveChanges()。网格使用内联编辑模式。
我的问题是,如果有一些客户端端验证错误,例如无效的日期格式,那么我不能执行一些DOM操作。遗憾的是grid.SaveChanges()没有返回值,在网格文档页面中搜索关键字“valid”没有结果。 (Teleport to Kendo Grid API documentation)
那么:如何确定在SaveChanges()之后是否存在验证错误,或者数据是否与持久存储成功同步?
提前谢谢
答案 0 :(得分:1)
我假设你正在使用MVC包装器但是调用grid.SaveChanges()
作为脚本的一部分。由于您使用的是内联编辑模式,这意味着您正在使用Ajax。如果这些假设是正确的,那么当您调用SaveChanges()时,将执行包装器中指定的控制器操作。如果您挂钩到.Error事件,您可以执行需要执行的任何脚本(即使这只是设置您在脚本的其他部分中检查的变量)。查看剑道网站入门中的Ajax Editing部分。你的Razor代码看起来类似于以下内容(其中一些是无关紧要的,我将其从生产代码中删除并略微修改):
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(cols =>
{
cols.Bound(p => p.ColumnA);
})
.Editable(edit => edit.Enabled(true).Mode(GridEditMode.InCell))
.DataSource(ds => ds
.Ajax()
.AutoSync(false)
.Model(model =>
{
model.Id(p => p.ColumnId);
})
// Configure RU -->
.Read(read => read.Action("_MyRead", "MyController").Data("additionalData"))
.Update(update => update.Action("_MyUpdate", "MyController").Data("additionalData"))
//.ServerOperation(false)
.Batch(true)
.Events(events => events
.Error("onError")
)
)
// <-- Configure RU
.Pageable(page => page.PageSizes(new int[] { 10, 25, 50, 100 }).Enabled(true))
.Groupable(group => group.Enabled(true))
.Filterable(filter => filter.Enabled(true).Extra(false))
.Sortable(sort => sort.Enabled(true).SortMode(GridSortMode.SingleColumn).AllowUnsort(true))
.Navigatable(nav => nav.Enabled(true))
.Resizable(resizing => resizing.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
)
然后你的onError脚本将如下所示:
function onError(e, status) {
if (e.errors) {
var message = "The following errors have occurred and changes will be discarded:\n";
$.each(e.errors, function (key, value) {
if (value.errors) {
message += value.errors.join("\n");
}
});
alert(message);
var grid = $("#Grid").data("kendoGrid");
grid.cancelChanges();
}
}