将多行保存到数据库
本文关键字:数据库 保存 | 更新日期: 2023-09-27 18:06:29
和读取,创建,更新,销毁工作良好时,一次只处理一行。
但是,当我尝试添加两个客户的EditingPopup_Create被调用三次。第一行一个,第二行两个……如果我添加超过两行相同的模式遵循。EditingPopup_Create方法运行的次数与它的客户数量一样多....
当前的实现是这样的:
@(Html.Kendo().Grid<CustomerModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(p => p.ContactPerson);
columns.Bound(p => p.ContactPersonEmail);
columns.Bound(p => p.ContactPersonPhone);
columns.Bound(p => p.MainPhoneNumber);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("CustomerPopUpTemplate"))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new {style = "height:500px;"})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
//.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.Id))
.Read(read => read.Action("EditingPopup_Read", "CustomerManagement"))
.Create(update => update.Action("EditingPopup_Create", "CustomerManagement"))
.Update(update => update.Action("EditingPopup_Update", "CustomerManagement"))
.Destroy(destroy => destroy.Action("EditingPopup_Destroy", "CustomerManagement"))
)
)
这可能是一个新手的错误,但我似乎不明白为什么会发生这种情况。在我看来,网格的连接应该只在每个实例中调用一次方法。
当您执行save on create时,您是否更改了与已创建的项目相关的id ?
我怀疑你所做的不是改变id从什么是提供和网格将其视为另一个创建。
因此,当您将项目保存回数据库时,将id设置为生成的数据库或如何生成它,您应该看到它没有进行第二次调用。
显示控制器代码也有助于回答这个问题。
确保您将模型返回给视图,以便它通过json更新与其关联的id。
如
返回json(new {model})。todatasourceresult(请求,状态))
找到了一个帖子,回答了我的问题,并填写了更多的问题…
剑道UI网格再次返回已插入的行
解释它的一种方法是,如果一个对象的Id为0,网格认为它是一个新行。如果这是一个新行,它认为它必须插入它。如果在添加行时网格中Object/Row的值没有更新,它将尝试重新添加该行,因为它认为该行不存在。
我希望这可以帮助任何人在那里…:)