添加新记录后,Kendo Grid调用'create'操作而不是'update'

时间:2013-12-04 16:19:18

标签: kendo-ui kendo-grid

我已经设置了一个基本的Kendo Grid,我正在使用服务器端PHP Wrapper库中的DataSourceResult类。

我遇到了一个奇怪的问题...如果我create新记录然后编辑它(不刷新页面),则再次调用create操作,而不是{ {1}}操作。

如果在添加新记录后刷新页面,则在更改记录后会正确调用update操作。

我可以确认DataSourceResult类在update操作后返回正确的数据,包括新记录的create

为什么会发生这种情况(以及如何阻止它)的任何想法? 感谢

更新:这是数据源代码。网址中的查询字符串只是为了轻松区分Chrome控制台中的请求。 id使用每个请求传递的附加数据来区分所请求的不同操作。

ajax.php

4 个答案:

答案 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

MasterLink

  

我希望这些信息能够提供帮助

答案 2 :(得分:1)

当您调用get_data()方法以将数据显示到kendo网格中时,传递表的自动递增的id,这样,当您单击删除按钮时,Deledata()肯定会调用。

enter image description here

答案 3 :(得分:0)

在我的情况下,另一种变化是,我在键字段上指定了defaultValue:

:last-of-type

不确定我在想什么,但它引起了相同的症状。