我有一个由列默认分组的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))”,一切正常,但默认分组会消失。
答案 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(),因为不再需要它。