2014-10-17 89 views
2

我的網格有所有crud操作工作,唯一的問題是,我保存一個新的記錄後,網格不會更新到控制器的新ID。我已驗證該ID是從控制器與模型一起發回的,但網格不更新。因此,對沒有頁面刷新的同一記錄的任何後續更改都會創建一條新記錄。Kendo網格創建後不更新ID

控制器:

 [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult AddHoleToJob([DataSourceRequest] DataSourceRequest request, PlannedHolesVM viewModel) 
     { 
      _jobInfoService.AddHole(viewModel); 
      return Json(viewModel, JsonRequestBehavior.AllowGet); 
     } 

CSHTML:

@(Html.Kendo().Grid<PlannedHolesVM>() 
.Name("PlannedHolesKendoGrid") 
.Editable(e => e.Mode(GridEditMode.PopUp).TemplateName("HoleDetails")) 
.Columns(c => 
{ 
    c.Bound(m => m.ID); 
    c.Bound(m => m.HoleSectionLookupName); 
    c.Bound(m => m.HoleSectionTypeLookupHoleSectionType); 
    c.Bound(m => m.HoleSize); 
    c.Command(command => 
    { 
     command.Edit(); 
     command.Destroy(); 
    }); 
}) 
    .ClientDetailTemplateId("template") 
.ToolBar(toolbar => toolbar.Create().Text("Add Hole")) 
.DataSource(ds => ds 
    .Ajax() 
    .Model(model => 
    { 
     model.Id(c => c.ID); 
     model.Field(c => c.JobID); 
     model.Field(c => c.JobID).DefaultValue(ViewBag.Jobid); 
     model.Field(c => c.HoleSectionID); 
     model.Field(c => c.HoleSectionTypeID); 
    }) 
    .Read(read => read.Action("PlannedHolesGridData", "JobRecord", new { jobid = ViewBag.Jobid })) 
    .Destroy(delete => delete.Action("DeleteHoleFromJob", "JobRecord")) 
    .Create(create => create.Action("AddHoleToJob", "JobRecord")) 
    .Update(update => update.Action("AddHoleToJob", "JobRecord")) 
    ) 
    .Events(e => 
    { 
     e.DataBound("dataBound"); 
     e.Save("refreshOnSave"); 
    }) 
) 

我如何使電網更新新的ID,而無需調用閱讀並要回數據庫?

+0

您已經爲'Create'和'Update'方法指定了相同的URL。 – CSharper 2014-10-20 14:53:39

+0

是的,這是故意的。他們都在automapper/entity框架的修改版本中調用save方法。 – user3738893 2014-10-20 16:19:22

回答

2

刪除自動遞增翻翻幾個類似的帖子,並找到一個Telerik的職位,解釋說,模式是預定義的後使用剃鬚刀時,並希望看起來像數據:

{ 
    "Data": [{ 
     "ProductID": 1, 
     "ProductName": "Chai8", 
     "UnitPrice": 18.00, 
     "UnitsInStock": 39, 
     "Discontinued": false 
    }, { 
     "ProductID": 2, 
     "ProductName": "Chang", 
     "UnitPrice": 19.00, 
     "UnitsInStock": 17, 
     "Discontinued": false 
    }], 
    "Total": 2, 
    "AggregateResults": null, 
    "Errors": null 
} 

我能夠修改我的控制器,以在預期和電網不更新ID的方式返回JSON。以下是控制器代碼:

 [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult AddHoleToJob([DataSourceRequest] DataSourceRequest request, PlannedHolesVM viewModel) 
     { 
      _jobInfoService.AddHole(viewModel); 
      return Json(new { Data = viewModel }); 
     } 

注意大寫'D'。

0

檢查數據庫,看看是否ID設置爲汽車incerment,從ID字段

+0

它被設置爲自動遞增。否則,當我將值插入爲零時,ID將不會由實體框架自動創建。這個新值正在返回,但沒有反映在網格中。你是否說過劍道網格不適用於自動遞增的字段? – user3738893 2014-10-20 16:23:40

相關問題