我在我的 javascript 函数中调用 grid.SaveChanges() 。网格正在使用内联编辑模式。
我的问题是如果有一些客户端验证错误,例如无效的日期格式,那么我不能执行一些 DOM 操作。不幸的是 grid.SaveChanges() 没有返回值,并且在网格文档页面中搜索关键字“有效”没有结果。(传送到 Kendo Grid API 文档)
那么:如何确定 SaveChanges() 之后是否存在验证错误或数据是否与持久存储成功同步?
提前谢谢
我在我的 javascript 函数中调用 grid.SaveChanges() 。网格正在使用内联编辑模式。
我的问题是如果有一些客户端验证错误,例如无效的日期格式,那么我不能执行一些 DOM 操作。不幸的是 grid.SaveChanges() 没有返回值,并且在网格文档页面中搜索关键字“有效”没有结果。(传送到 Kendo Grid API 文档)
那么:如何确定 SaveChanges() 之后是否存在验证错误或数据是否与持久存储成功同步?
提前谢谢
我假设您正在使用 MVC 包装器,但grid.SaveChanges()
作为脚本的一部分进行调用。由于您使用的是内联编辑模式,这意味着您使用的是 Ajax。如果这些假设是正确的,那么当您调用 SaveChanges() 时,将执行包装器中指定的控制器操作。如果您挂钩 .Error 事件,您可以执行任何需要执行的脚本(即使这只是设置您在脚本的其他部分中检查的变量)。在 Kendo 的网站上查看 Getting Started的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();
}
}