Сохранение во многих строках в базу данных

StackOverflow https://stackoverflow.com//questions/24030851

  •  21-12-2019
  •  | 
  •  

Вопрос

и прочитайте, создавать, обновлять, уничтожить отлично работает при работе только с одной строкой за раз.

Но, когда я пытаюсь добавить два клиента 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"))
              )
              )
.

Это, вероятно, новичка, но я не могу понять, почему это произойдет.На мой взгляд, проводка сетки должна вызывать только методы один раз в случае.

Объяснение было бы очень оценено :)

Это было полезно?

Решение

Когда вы выполняете Сохранить на создании, вы меняете идентификатор, связанный с созданным элементом?

Я подозреваю, что вы делаете, не изменяет идентификатор от того, что предоставляется, и сетка лечит это как другое.

Поэтому, когда вы сохраняете свой товар обратно в базу данных, установите идентификатор в сгенерированную базу данных или как когда-либо, вы генерируете его, и вы должны увидеть, что он не выполняет второй звонок.

Показ кода контроллера поможет также ответить на него.

Убедитесь, что вы возвращаете модель обратно на вид, чтобы он обновил идентификатор, связанный с ним через JSON.

, например,

return json (новый {модель} .todatasourceresult (запрос, modelState))

Другие советы

Нашел сообщение, который ответил на мой вопрос и еще больше заполнил вопрос ...

kendo ui Grid Отправка назад уже вставленные строки снова

Способ объяснить это, что если идентификатор объекта 0, сетка считает, что это новый ряд.Если это новый ряд, он думает, что он должен вставить его.Если значение объекта / строки в сетке не обновляется, когда добавлена строка, она попытается повторно добавить его, потому что она думает, что она не существует.

Я надеюсь, что это может помочь кому-нибудь там ... :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top