Kendo UI数据源中新项的ID

时间:2012-08-21 14:05:23

标签: ajax kendo-ui

当我在服务器端using a Kendo UI data source创建新项目时,如何使用插入的新记录的ID更新客户端数据项的ID 服务器端的数据库?

4 个答案:

答案 0 :(得分:4)

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

http://www.kendoui.com/forums/ui/grid/refresh-grid-after-datasource-sync.aspx#2124402

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

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

对象的

以下是代码:

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

答案 1 :(得分:1)

为了避免read方法引入额外的服务器调用,如果你的create方法返回一个对象,Data Source会自动为你插入它。

知道您需要做的就是从数据库中设置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);
}

答案 2 :(得分:0)

我遇到了同样的问题,并认为我可能找到了答案。如果在模式中定义了包含结果的对象,则必须在同一对象中返回创建的链接的结果。例如:

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}});
}

答案 3 :(得分:0)

只是为了添加Jack的答案(我没有评论的声誉),如果你的创建和更新操作返回的数据与kendo DataSource中定义的模式相同,那么DataSource也会自动更新Id字段与动作调用可能已修改的任何其他字段一样。您无需执行任何其他正确形成结果的操作。我使用这个功能来计算服务器端的一堆东西,并向客户端提供结果,而不需要完全重新加载数据。