2014-06-10 55 views
1

我有一个kendo ui网格,asp web api作为后端。当我打电话创建在剑道UI方法,这就是所谓的Web API以下方法Kendo Grid CRUD:如何使更新

public IHttpActionResult PostProduct(ProductDTO product) 
{ 
    ... 
    ... 
    return StatusCode(HttpStatusCode.NoContent); 
} 

现在,如果我尝试编辑在剑道UI电网项目再次被调用的创建方法,而不是更新的方法。 如果我重新加载页面(所以称为kendo ui网格的读取方法),则更新方法起作用。

有什么问题?我有以下模式:

schema: { 
     model: { 
      id: "Id", 
      fields: { 
       Id: { editable: false, type: "number" }, 
       Name: { validation: { required: true } }, 
       Description: { editable: true }, 
       Price: { editable: true }, 
       Active: { type: "boolean" }, 
      } 
     } 
    } 

我有以下运输(省略了一些代码)

$scope.tabellaProdotto = new kendo.data.DataSource({ 
    transport: { 
     read: { 
      url: function() { 
       return "api/Prodotti/GetProdottoPerTipoProdotto/" + productTypeMainSelected; 
      }, 
      dataType: "json" 
     }, 
     create: { 
      url: "api/Prodotti/PostProdotto", 
      dataType: "json", 
      data: function (prodottoTmp) { 
       ... 
      }, 
      type: "POST" 
     }, 
     update: { 
      url: function (prodotto) { 
       return "api/Prodotti/PutProdotto" + prodotto.Id 
      }, 
      data: function (prodottoTmp) { 
       ... 
      }, 
      type: "PUT", 
      dataType: "json" 

更新:这个问题似乎是网页API操作方法的返回:

return CreatedAtRoute("DefaultApi", new { id = p.Id }, p); 

现在的作品,但p对象大小维度非常高:我必须返回整个对象?

+0

你有没有更新? – ManirajSS

+0

是的!我编辑了这个问题。无论如何,似乎网格不追踪创建的项目...实际上,如果我重新加载页面更新的作品 – Tom

+0

所以你的问题是更新调用正确...但更新的价值不反映在用户界面时,从UI回来控制器?现在,您手动刷新页面以查看更新后的结果...我是否正确? – ManirajSS

回答

0

这听起来像Grid没有以正确的格式获得Json。 一定要使用KendoMVC DataSourceRequest对象以正确的格式返回数据。

这里有一个例子:在您的运输URL():

public ActionResult Update([DataSourceRequest] DataSourceRequest request, MyViewModel data) 
    { 
     var result = UpdateBackend(data); 
     return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
    }