2014-06-10 56 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); 
    }