我已经设置了一个基本的Kendo Grid,我正在使用服务器端PHP Wrapper库中的DataSourceResult类。
我遇到了一个奇怪的问题...如果我create
新记录然后编辑它(不刷新页面),则再次调用create
操作,而不是{ {1}}操作。
如果在添加新记录后刷新页面,则在更改记录后会正确调用update
操作。
我可以确认DataSourceResult类在update
操作后返回正确的数据,包括新记录的create
。
为什么会发生这种情况(以及如何阻止它)的任何想法? 感谢
更新:这是数据源代码。网址中的查询字符串只是为了轻松区分Chrome控制台中的请求。 id
使用每个请求传递的附加数据来区分所请求的不同操作。
ajax.php
答案 0 :(得分:5)
我也有同样的问题&我试过这个&它会起作用。
.Events(events => events.RequestEnd("onRequestEnd"))
在此功能中使用以下内容:
function onRequestEnd(e) {
var tmp = e.type;
if (tmp == "create") {
//RequestEnd event handler code
alert("Created succesully");
var dataSource = this;
dataSource.read();
}
else if (tmp == "update") {
alert("Updated succesully");
}
}
尝试在网格的onRequestEnd事件中使用此代码
var dataSource = this;
dataSource.read();
希望它会对你有所帮助。
答案 1 :(得分:5)
最佳解决方案
设置更新,创建或删除不同的呼叫操作
来自Telerik支持:
我已经在支持帖中回复了你的问题 就同一主题提交。为方便起见,我将粘贴我的回复 在论坛上也是如此。
出现此问题的原因是您的模型没有ID。该模型 ID对编辑功能至关重要,不应忽略 - 每个dataSource记录应该具有唯一的ID,记录具有空ID 字段被视为新字段,并通过"创建" 运输。
schema: {
model: {
//id? model must have an unique ID field
fields: {
FirstName: { editable: false},
DOB: { type: "date"},
Created: {type: "date" },
Updated: {type: "date" },
}
} },
有关该主题的更多信息,请检查以下内容 资源:
http://docs.kendoui.com/api/framework/model#methods-Model.define http://www.kendoui.com/forums/ui/grid/request-for-support-on-editable-grid.aspx#228oGIheFkGD4v0SkV8Fzw
我希望这些信息能够提供帮助
答案 2 :(得分:1)
答案 3 :(得分:0)
在我的情况下,另一种变化是,我在键字段上指定了defaultValue:
:last-of-type
不确定我在想什么,但它引起了相同的症状。