Kendo UI Grid — добавление новой записи показывает 0 в качестве идентификатора

Я использую Kendo UI Grid с ASP.NET MVC, Entity Framework и OData. У меня также есть идентификатор записи внутри сетки - пока все хорошо.

Но когда я нажимаю «Добавить новую запись» на панели инструментов, в столбце идентификатора отображается 0, пока я редактирую данные.

И после того, как я нажму кнопку «Обновить», он не изменится на правильный идентификатор (который был возвращен службой):

{  
    "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"
}

Когда я обновляю страницу/браузер, отображается правильный идентификатор.

Вот мой метод публикации:

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;
}

А вот источник данных js (его часть):

dataSource: {
type: "odata",
pageSize: 25,
serverSorting: true,
serverPaging: true,
transport: {
    create: {
        url: "/api/AssetList",
        dataType: "json"
    },
    read: {
        url: "/api/AssetList",
        dataType: "json"
    },
    update: {
        url: "/api/AssetList",
        dataType: "json"
    },
    destroy: {
        url: function (data) {
            return "/api/AssetList([RW-PARAM])".replace("[RW-PARAM]", data.ID);
        },
        dataType: "json"
    }

person Miro Grenda    schedule 11.07.2013    source источник


Ответы (1)


В поле будет отображаться текст «0», так как это значение свойства «RecordID» по умолчанию (это поведение по умолчанию). Он также поддерживает установку его значения после извлечения данных. Что вы можете сделать, так это очистить значение вручную:

 function onGridEdit(e) {

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

Этот код необходимо поместить в обработчик события редактирования сетки.

person Salman Shaykh    schedule 16.04.2015