当我在服务器端using a Kendo UI data source创建新项目时,如何使用插入的新记录的ID更新客户端数据项的ID 服务器端的数据库?
答案 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字段与动作调用可能已修改的任何其他字段一样。您无需执行任何其他正确形成结果的操作。我使用这个功能来计算服务器端的一堆东西,并向客户端提供结果,而不需要完全重新加载数据。