Ajax 剑道UI数据源中新项目的ID

Ajax 剑道UI数据源中新项目的ID,ajax,kendo-ui,Ajax,Kendo Ui,当我在服务器端创建一个新项目时,如何用插入服务器端数据库中的新记录的ID更新客户端数据项目的ID?做更多的研究,我发现这个非常有用的信息,确实应该在文档中,但它是“隐藏的”在不太容易找到的论坛搜索消息中: 我不确定这是否是最好的方法,但它解决了我的问题 此解决方案仅使用数据源read方法使用来自服务器的数据更新模型实例 珍贵的信息在完成的地方:在传输的“完成”事件中。创建对象 代码如下: transport: { read: { url: "http://myurl.j

当我在服务器端创建一个新项目时,如何用插入服务器端数据库中的新记录的ID更新客户端数据项目的ID?

做更多的研究,我发现这个非常有用的信息,确实应该在文档中,但它是“隐藏的”在不太容易找到的论坛搜索消息中:

我不确定这是否是最好的方法,但它解决了我的问题

此解决方案仅使用数据源read方法使用来自服务器的数据更新模型实例

珍贵的信息在完成的地方:在传输的“完成”事件中。创建对象

代码如下:

transport: {
    read: {
        url: "http://myurl.json"
    },
    create: {
        url: "http://mycreate.json",
        type: "POST",
        complete: function(e) {
            $("#grid").data("kendoGrid").dataSource.read(); 
        }
    },

为了避免read方法引入的额外服务器调用,如果您让create方法返回一个对象,那么数据源将自动为您插入该对象

知道您需要做的就是从数据库中设置id字段并返回模型

e、 g.创建ASP MVC操作的psudo代码

public JsonResult CreateNewRow(RowModel rowModel)
{
    // rowModel.id will be defaulted to 0

    // save row to server and get new id back
    var newId = SaveRowToServer(rowModel);

    // set new id to model
    rowModel.id = newId;

    return Json(rowModel);
}

我也有同样的问题,我想我可能已经找到了答案。如果在模式中定义了保存结果的对象,则必须返回该对象中创建的链接的结果。例如:

schema: {
          data: "Results",
          total: "ResultsCount", .... 
}
MVC方法示例:

public JsonResult CreateNewRow(RowModel rowModel)
{
    // rowModel.id will be defaulted to 0

    // save row to server and get new id back
    var newId = SaveRowToServer(rowModel);

    // set new id to model
    rowModel.id = newId;

    return Json(new {Results = new[] {rowModel}});
}

只是为了补充Jack的回答(我没有评论的名声),如果创建和更新操作返回的数据与kendo数据源中定义的模式相同,那么数据源将自动更新Id字段以及操作调用可能修改的任何其他字段。你不必做任何其他正确形成结果的事情。我使用此功能计算服务器端的一堆数据,并向客户端显示结果,而不需要完全重新加载数据。

但是,每次创建新项目时,您都会转到数据库,保存它,然后在返回后再次转到数据库,读取您已经拥有的信息。它是多余的,必须有一种方法来更新视图。顺便说一句,你是巴西人吗?