Пакетное сохранение Kendo Grid в режиме встроенного редактирования

У меня есть MVC3 Razor View для простого контактного объекта — имени и фамилии, должности и т. д. — включая сетку, используемую для сохранения одного или нескольких телефонных номеров.

Сетка отображается в режиме встроенного редактирования после того, как пользователь нажимает «Сохранить», чтобы создать новый элемент, и появляется новый идентификатор для сохранения телефонных номеров. Это работает нормально, но клиент предпочел бы, чтобы вся форма сохранялась при первом нажатии, включая любые изменения в сетке телефонных номеров. Хитрость заключается в том, что они хотят сохранить существующий встроенный UX, в чем и заключается мой вопрос:

Как вы можете сохранить весь UI/UX, связанный с режимом встроенного редактирования сетки кендо, но сохранить как пакет, как если бы он был настроен на редактирование в ячейке?

Я читал различные статьи и руководства по сохранению изменений сетки при нажатии, но большинство из них относятся к редактированию в ячейке и не относятся к Razor.

Вот код для сетки в его нынешнем виде (без шаблона редактора или функций js), пожалуйста, дайте мне знать, если я могу предоставить какие-либо дополнительные сведения, и я обновлю свой вопрос.

@(Html.Kendo().Grid<ContactNumberListItem>()
          .Name("PhoneNumbersGrid")
          .Columns(columns =>
              {
                  columns.Bound(model => model.Number).Title("Number").Format("{0:#,#}");
                  columns.Bound(model => model.Type).EditorTemplateName("_tmpl_contactPhoneNumberType_dd").Title("Type").ClientTemplate("#:Type.Name#");

                  columns.Command(commands =>
                      {
                          commands.Edit().Text(" ")
                                  .UpdateText(" ")
                                  .CancelText(" "); // The "edit" command will edit and update data items
                          commands.Custom("Delete").Text(" ").Click("DeleteContactPhoneNumber"); // The "destroy" command removes data items
                      }).Width(98);
              })
          .ToolBar(toolBar => toolBar.Create())
          .Editable(editable => editable.Mode(GridEditMode.InLine).DisplayDeleteConfirmation(false))
          .Selectable()
          .Events(events => events
                                .DataBound("OnGridDataBound")
                                .Cancel("OnGridCancel")
                                .Edit("OnGridEdit")
                                .Save("OnGridSave"))
          .DataSource(dataSource => dataSource
                                        .Ajax()
                                        .Batch(false)
                                        .PageSize(5)
                                        .ServerOperation(false)
                                        .Model(model =>
                                            {
                                                model.Id(x => x.Id);
                                                model.Field(t => t.Type).DefaultValue(((List<PhoneNumberTypeListItem>)ViewBag.ContactPhoneNumberTypes).FirstOrDefault());                                                    
                                            })
                                        .Create(update => update.Action("CreateContactPhoneNumber", "ContactPhoneNumber").Data("GetContactId"))
                                        .Update(update => update.Action("UpdateContactPhoneNumber", "ContactPhoneNumber"))
                                        .Read(read => read.Action("SelectContactPhoneNumbers", "ContactPhoneNumber").Data("GetContactId"))
                                        .Events(e => e.Error("error_handler"))))

person GP24    schedule 07.07.2014    source источник


Ответы (1)


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

http://www.telerik.com/support/code-library/save-all-changes-with-one-request

person GP24    schedule 07.07.2014