Kendo ui 剑道UI网格-添加新记录将0显示为ID

Kendo ui 剑道UI网格-添加新记录将0显示为ID,kendo-ui,odata,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Odata,Kendo Grid,Kendo Asp.net Mvc,我正在使用带有ASP.NETMVC、实体框架和OData的剑道UI网格。 我在网格中也有记录ID-到目前为止还不错 但是,当我在编辑数据时,单击工具栏中的“添加新记录”时,ID列会显示一个0 单击“更新”按钮后,它不会更改为服务返回的正确ID: { "odata.metadata":"http://localhost:61534/api/$metadata#AssetList/@Element", "ID":17, "ManufacturerName":"TEST",

我正在使用带有ASP.NETMVC、实体框架和OData的剑道UI网格。 我在网格中也有记录ID-到目前为止还不错

但是,当我在编辑数据时,单击工具栏中的“添加新记录”时,ID列会显示一个0

单击“更新”按钮后,它不会更改为服务返回的正确ID:

{  
    "odata.metadata":"http://localhost:61534/api/$metadata#AssetList/@Element",
    "ID":17,
    "ManufacturerName":"TEST",
    "Name":"TEST",
    "SerialNumber":"TEST",
    "AssetStateID":1,
    "AssetStateName":"TEST",
    "NextCalibration":"2013-07-11T09:08:28.298Z"
}
刷新页面/浏览器时,将显示正确的ID

以下是我的发帖方法:

public override HttpResponseMessage Post(AssetListViewModel item)
{
    // #### MG: CREATE ASSET
    RSAMS.WebUI.Models.Asset asset = new Asset();
    asset.Manufacturer = item.ManufacturerName;
    asset.Name = item.Name;
    asset.SerialNumber = item.SerialNumber;
    asset.AssetStateID = 1; // IN USE
    asset.NextCalibration = item.NextCalibration;
    db.Asset.Add(asset);
    db.SaveChanges();

    // #### MG: RESPONSE
    item.ID = asset.ID;
    item.AssetStateID = asset.AssetStateID;
    var response = Request.CreateResponse<AssetListViewModel>(HttpStatusCode.Created, item);
    response.Headers.Location = new Uri(Url.Link("OData", new { id = item.ID }));
    return response;
}

该字段将显示0文本,因为这是RecordID属性的默认值。这是默认行为。它还支持在检索数据后设置其值。您可以做的是手动清除该值:

 function onGridEdit(e) {

        if (e.model.isNew()) {
            e.model.set("RecordID", null);
        }
}
此代码需要放置在网格编辑事件处理程序中

 function onGridEdit(e) {

        if (e.model.isNew()) {
            e.model.set("RecordID", null);
        }
}