Kendo ui 在编辑或创建剑道网格条目时检测服务器端错误
我有一个可编辑的剑道网格来管理(创建/修改)用户帐户。编辑是在弹出窗口中完成的(相对于内联或批处理)。我有客户端验证来帮助确保向服务器提供有效的数据,但是我无法确定在服务器端创建/更新失败的情况下如何处理来自服务器的响应。我所说的“失败”并不是指HTTP 404或500的请求失败;我说的是失败,因为服务器上的脚本不喜欢数据的某些方面,并且拒绝执行 有人能告诉我如何做到这一点吗?我希望能够做的是在更新发送到服务器之后,等待响应。如果回答说一切正常,那就太好了。如果回复说有些事情进展不太顺利,我希望能够(A)保持弹出式编辑窗口打开并填充,(B)向用户提供有关拒绝原因的反馈。除非响应表明一切正常,否则不应将数据提交到网格。同样,编辑弹出窗口应该保持打开状态,直到服务器说OK 只要我能完成我想要的,我就可以灵活地设置服务器响应的格式 在您向我介绍剑道官方API文档之前,我已经非常了解它并每天参考它。然而,至少可以说,它是不完整的,我找不到任何与这个主题相关的东西。如果您在文档中发现了一些您认为可以帮助我的东西,那么请务必指向文档=) 根据要求,下面是我创建网格的代码Kendo ui 在编辑或创建剑道网格条目时检测服务器端错误,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我有一个可编辑的剑道网格来管理(创建/修改)用户帐户。编辑是在弹出窗口中完成的(相对于内联或批处理)。我有客户端验证来帮助确保向服务器提供有效的数据,但是我无法确定在服务器端创建/更新失败的情况下如何处理来自服务器的响应。我所说的“失败”并不是指HTTP 404或500的请求失败;我说的是失败,因为服务器上的脚本不喜欢数据的某些方面,并且拒绝执行 有人能告诉我如何做到这一点吗?我希望能够做的是在更新发送到服务器之后,等待响应。如果回答说一切正常,那就太好了。如果回复说有些事情进展不太顺利,我希望
$(“#剑道用户网格”).kendoGrid({
栏目:[{
标题:“姓氏”,
字段:“lName”
},{
标题:“名字”,
字段:“fName”
},{
标题:“业务单位”,
字段:“业务单位”
},{
标题:“用户名”,
字段:“loginId”
},{
标题:“电子邮件地址”,
字段:“电子邮件”
},{
标题:“电话”,
字段:“电话”
},{
标题:“地址”,
字段:“地址”
},{
标题:“城市”,
字段:“城市”
},{
标题:“国家”,
字段:“状态”
},{
标题:“邮政编码”,
字段:“zipcode”
},{
标题:“国家”,
字段:“国家”
},{
标题:“时区”,
字段:“时区”
},{
标题:“特权”,
字段:“privs”
},{
命令:[“编辑”、“销毁”],
标题:“
}],
可滚动:false,
数据源:{
运输:{
阅读:{
url:“manageUsers.phtml”,
数据:{mode:“fetch”},
数据类型:“json”,
类型:“职位”
},
更新:{
url:“manageUsers.phtml”,
数据:{模式:“更新”},
类型:“职位”
},
销毁:{
url:“manageUsers.phtml”,
数据:{模式:“销毁”},
类型:“职位”
},
创建:{
url:“manageUsers.phtml”,
数据:{mode:“create”},
类型:“职位”
},
批次:假
},
模式:{
数据:“记录”,
总计:“总计”,
型号:{
id:“用户id”,
字段:{
userId:{editable:false,nullable:true},
lName:{type:“string”,可编辑:true,验证:{required:true},
fName:{type:“string”,可编辑:true,验证:{required:true},
业务单元:{type:“string”,可编辑:true,验证:{required:true},
loginId:{type:“string”,验证:{required:true},
电子邮件:{type:“string”,验证:{required:true},
电话:{type:“string”},
地址:{type:“string”},
城市:{type:“string”},
状态:{type:“string”},
zipcode:{type:“string”},
国家:{type:“string”},
时区:{type:“string”},
privs:{type:“string”}
}
}
},
页面大小:20,
服务器分页:false,
服务器筛选:false,
服务器排序:false
},
可过滤:正确,
可排序:是的,
pageable:对,
可编辑:{
模式:“弹出”,
模板:kendo.template($(“#kendo_edit_user_template”).html())
},
工具栏:[“创建”、“保存”、“取消”]
});
有两点需要记住:
错误定义,该定义提供对从服务器返回的状态的访问
error
事件处理程序,例如,还原以前的值myError
的字段中返回错误消息,则您可能会遇到如下情况:
schema: {
errors: "myError",
data: "records",
total: "total",
model: {
id: "userId",
fields: {
userId: { editable: false, nullable: true },
lName: { type: "string", editable: true, validation: { required: true } },
fName: { type: "string", editable: true, validation: { required: true } },
...
或:
活动将是:
dataSource: {
error : function (e) {
if (e.errors !== false) {
alert("Error: " + e.errors);
// This will cancel any change done
this.cancelChanges();
}
},
transport: {
read: {
url: "manageUsers.phtml",
data: { mode: "fetch" },
dataType: "json",
type: "POST"
},
编辑:如果要保持弹出窗口打开,应执行以下操作:
dataSource: {
error : function (e) {
if (e.errors !== false) {
alert("Error: " + e.errors);
// This will keep the popup open
grid.one("dataBinding", function (e) {
e.preventDefault(); // cancel grid rebind
});
}
},
transport: {
read: {
url: "manageUsers.phtml",
data: { mode: "fetch" },
dataType: "json",
type: "POST"
},
我使用绑定到数据绑定事件一次,你能发布一些你已经有的代码吗?我已经更新了我的帖子,添加了我用来创建网格的代码。谢谢@OnaBai!我不知道存在
Schema.errors
,我认为dataSource.error
是针对HTTP错误的,但很高兴了解到其他错误!我还没有弄清楚的另一个问题是如何保持编辑弹出窗口的打开状态,直到确认成功为止。使用this.cancelChanges()
d
dataSource: {
error : function (e) {
if (e.errors !== false) {
alert("Error: " + e.errors);
// This will keep the popup open
grid.one("dataBinding", function (e) {
e.preventDefault(); // cancel grid rebind
});
}
},
transport: {
read: {
url: "manageUsers.phtml",
data: { mode: "fetch" },
dataType: "json",
type: "POST"
},