2013-07-11 4 views
1

입니다. ASP.NET MVC, Entity Framework 및 OData에서 Kendo UI Grid를 사용하고 있습니다. 그리드 내부에 레코드 ID가 있습니다 - 지금까지는 그렇게 좋습니다.검도 UI Grid - 0으로 새 레코드 추가 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; 
} 

그리고 여기에 (의 일부) 데이터 소스 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" 
    } 

답변

0
이 기본값이기 때문에이 필드를 "0"텍스트가 표시됩니다

"RecordID"속성 (기본 동작)입니다. 또한 데이터가 당신이 할 수있는 retrieved.What 후 그 값을 설정하면 수동으로 값을 취소하는 것입니다 지원

function onGridEdit(e) { 

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

이 코드는 격자 편집 이벤트 처리기에 배치 될 필요가있다.