Kendo网格在创建后不会更新ID

问题描述 投票:3回答:2

我的网格可以执行所有的Crud操作,唯一的问题是,在保存新记录之后,网格不会从控制器更新为新ID。我已经验证了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");
    })
)

如何使网格在不调用read并返回数据库的情况下更新新ID?

kendo-ui kendo-grid kendo-asp.net-mvc
2个回答
3
投票

[浏览了几篇类似的文章并找到一条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
}

我能够修改控制器以按预期方式返回Json,并且网格确实更新了ID。这是控制器代码:

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

注意大写字母“ D”。


0
投票

检查数据库,查看ID是否设置为自动缩进,从“ ID”字段中删除“自动增量”

© www.soinside.com 2019 - 2024. All rights reserved.