0

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

 @(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))”,一切正常,但默认分组关闭。

4

1 回答 1

0

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

.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() ,因为它不再需要。

于 2017-08-23T07:08:02.390 回答