Kendo Grid CRUD:如何进行更新

时间:2014-06-10 16:17:01

标签: javascript jquery asp.net-mvc kendo-ui kendo-grid

我有一个使用asp web api作为后端的kendo ui网格。当我在kendo ui中调用create方法时,它在web api中调用了以下方法

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

现在,如果我尝试编辑Kendo Ui Grid中的项目,则再次调用create方法而不是update方法。 如果我重新加载页面(所以称为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"

更新:问题似乎是web api操作方法的返回:

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

现在可以工作,但p对象大小尺寸非常高:我必须返回整个对象吗?

1 个答案:

答案 0 :(得分:0)

这听起来像Grid并没有让Json以正确的格式返回。 请务必使用KendoMVC DataSourceRequest对象以正确的格式返回数据。

以下是一个例子:

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