Встроенное редактирование Kendo Grid не вызывает событие при добавлении элемента после нажатия кнопки «Обновить»

0

По какой-то причине событие обновления не запускается при добавлении элемента во встроенный режим редактирования в Kendo Grid. Я перебирал документацию и пытался реализовать код как можно скорее. Я также отслеживаю firebug, и консоль никогда не показывает никакой активности. Демо работает хорошо, но мой код не работает.

Он отлично работает при редактировании или удалении элемента из сетки, но при создании элемента ничего не работает, нет активности. Может ли проблема быть в том, что у GroupID пока нет указаний, и сетка не запускает это событие? (Я полностью угадываю из воздуха, я в недоумении)

Мой код бритвы:

@(Html.Kendo().Grid<GroupViewModel>()
  .Name("GroupGrid")
  .Columns(columns =>
      {
          columns.Bound(c => c.GroupID).Hidden();
          columns.Bound(c => c.Name);
          columns.Bound(e => e.FK_CategoryID).EditorTemplateName("CategoriesList").Title("Category").ClientTemplate("#:CatName#");
          columns.Command(command => { command.Edit(); command.Destroy(); }).Width(170);
      })
  .HtmlAttributes(new { style = "width: 500px;" })
  .ToolBar(toolbar => toolbar.Create())
  .Editable(editable => editable.Mode(GridEditMode.InLine))
  .Scrollable(s => s.Enabled(false))
  .Selectable(s => s.Enabled(true).Mode(GridSelectionMode.Single))
  .DataSource(dataSource => dataSource
                                .Ajax()
                                .Read(read => read.Action("Group_Grid_Read", "Home"))
                                .Events(events => events.Error("error_handler"))
                                .Model(model => model.Id(p => p.GroupID))
                                .Create(update => update.Action("EditingInline_Create", "Home"))
                                .Update(update => update.Action("EditingInline_Update", "Home"))
                                .Destroy(update => update.Action("EditingInline_Destroy", "Home"))
  )
  .Events(e => e.Change("onGroupGridChange").Save("GroupGrid_Save"))
)

Мое действие контроллера:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditingInline_Create([DataSourceRequest] DataSourceRequest request, GroupViewModel groupViewModel)
{
    if (groupViewModel != null && ModelState.IsValid)
    {
        // add group
        // abbreviated
    }

    return Json(new[] { groupViewModel }.ToDataSourceResult(request, ModelState));
}

Моя модель просмотра:

public class GroupViewModel
{
    public Guid GroupID { get; set; }
    public string Name { get; set; }
    public Guid? FK_CategoryID { get; set; }
    public string CatName { get; set; }
}

### EDITED ###

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

Теперь у меня есть еще один вопрос относительно Руководства GroupID. Поскольку я хочу сохранить скрытые переменные GroupID и CatName, как я могу заполнить GroupID с помощью "нового Guid()" и CatName с помощью "new string()" после нажатия кнопки "Добавить новую запись"?

Похоже, что проблема заключалась в проверке новой записи.

.Columns(columns =>
{
    columns.Bound(c => c.GroupID);
    columns.Bound(c => c.Name);
    columns.Bound(e => e.FK_CategoryID).EditorTemplateName("CategoriesList").ClientTemplate("#:CatName#");
    columns.Bound(c => c.CatName);
    columns.Command(command => { command.Edit(); command.Destroy(); }).Width(170);
})
Теги:
asp.net-mvc
kendo-ui
kendo-grid
telerik

1 ответ

0

Вы можете сохранить скрытые идентификаторы GroupID и CatName и предоставить значения во время вызова Kendo Grid на dataSource..parameterMap.

Вы можете изменять поля вновь добавленных строк перед отправкой данных контроллеру, предоставляя обработчик файла dataSource.transport.parameterMap. Например:

$("#GroupGrid").data("kendoGrid").dataSource.transport.parameterMap = function (data, operation) { for(var я in data.models) { data.models[i].GroupID = new GUID(); data.models[i].CatName = "Doge"; } };

  • 0
    По какой-то причине это не работает, я все еще получаю ошибку проверки. Функция для параметраMap никогда не вызывается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню