Ajax 剑道UI数据源中新项目的ID
当我在服务器端创建一个新项目时,如何用插入服务器端数据库中的新记录的ID更新客户端数据项目的ID?做更多的研究,我发现这个非常有用的信息,确实应该在文档中,但它是“隐藏的”在不太容易找到的论坛搜索消息中: 我不确定这是否是最好的方法,但它解决了我的问题 此解决方案仅使用数据源read方法使用来自服务器的数据更新模型实例 珍贵的信息在完成的地方:在传输的“完成”事件中。创建对象 代码如下:Ajax 剑道UI数据源中新项目的ID,ajax,kendo-ui,Ajax,Kendo Ui,当我在服务器端创建一个新项目时,如何用插入服务器端数据库中的新记录的ID更新客户端数据项目的ID?做更多的研究,我发现这个非常有用的信息,确实应该在文档中,但它是“隐藏的”在不太容易找到的论坛搜索消息中: 我不确定这是否是最好的方法,但它解决了我的问题 此解决方案仅使用数据源read方法使用来自服务器的数据更新模型实例 珍贵的信息在完成的地方:在传输的“完成”事件中。创建对象 代码如下: transport: { read: { url: "http://myurl.j
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字段以及操作调用可能修改的任何其他字段。你不必做任何其他正确形成结果的事情。我使用此功能计算服务器端的一堆数据,并向客户端显示结果,而不需要完全重新加载数据。但是,每次创建新项目时,您都会转到数据库,保存它,然后在返回后再次转到数据库,读取您已经拥有的信息。它是多余的,必须有一种方法来更新视图。顺便说一句,你是巴西人吗?