将多行保存到数据库

本文关键字:数据库 保存 | 更新日期: 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的值没有更新,它将尝试重新添加该行,因为它认为该行不存在。

我希望这可以帮助任何人在那里…:)