在列上分组时不会触发kendo datagrid update事件

时间:2016-12-28 12:32:01

标签: kendo-ui datagrid kendo-ui-grid

我有一个由列默认分组的kendo数据网格,我想内联编辑网格。我不希望用户按任何其他列分组。虽然默认分组工作正常,但不会触发更新事件,并且控件不会使用控制器的内联更新方法。你能来看看我哪里出错了。以下是代码:

 @(Html.Kendo().Grid(Model)
    .Name("grdTimesheets")
    .Columns(columns =>
    {
        columns.Bound(p => p.EmployeeId).Hidden(true);
        columns.Bound(p => p.FirstName);
        columns.Bound(p => p.Monday.Hour).Title("Monday")
            .EditorTemplateName("TimesheetMonday");
        columns.Command(command =>
        {
            command.Edit();
            command.Destroy();
            command.Custom("Add").Text(" ").Click("AddNewTimesheet");
        });
    })
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Pageable()
    .Sortable()
    .Groupable(false)
    .Scrollable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(p => p.EmployeeId);
            model.Field(p => p.FirstName).Editable(false);
        })
        .PageSize(20)
        .Update(update => update.Action("EditingInline_Update", "Timesheet"))
        .Destroy(destroy => destroy.Action("EditingInline_Destroy", "Timesheet"))
        .Group(d=>d.Add(f=>f.FirstName))
    )

如果我注释掉最后一行“.Group(d => d.Add(f => f.FirstName))”,一切正常,但默认分组会消失。

1 个答案:

答案 0 :(得分:0)

我知道答案有点晚了,但我会留下这个,以防其他人遇到同样的问题。按任意列分组后,网格将不会触发“.Update(update => update.Action(”EditingInline_Update“,”Timesheet“))”“。为了解决这个问题,您需要为网格添加OnEditEvent,并在javascript函数中将事件附加到文本框/下拉列表或您拥有的任何控件。以下示例:

.Events(events => events.Edit(“grid_edit”))这是在视图中

的javascript:

function grid_edit(e) {
    var grid = $('#grid').data('kendoGrid');
    var cell = e.container;
    var area = cell.find("textarea")

    area.on("blur", function() {
        // update ur entries here
        var areaVal = cell.find("textarea").val(); // this is the new value
        // call some ajax to update the value and in the success call grid.dataSource.sync(); to refresh the grid
    });}

此外,您还需要删除DataSource的.Update(),因为不再需要它。