2

这是 Razor 模板:

@(Html.Kendo().Grid<SubmitGridViewModel>()
    .Name(gridId)
    .Columns(columns => {
        columns.Bound(p => p.LastName);
        columns.Bound(p => p.FirstName);
        columns.Command(command => command.Destroy()).Width(110);
    })
    .ToolBar(toolbar => toolbar.Create())
    .Editable(editable =>
    {
        editable.Mode(GridEditMode.InCell);
        editable.DisplayDeleteConfirmation(false);
    })
    .Navigatable()
    .Sortable()
    .Scrollable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .AutoSync(true)
        .Batch(true)
        .Model(model => model.Id(p => p.Id))
        .Read(o => o.Action(AppRoute.SubmitGridRead.ToMethod(), AppRoute.SubmitGridRead.ToController()))
        .Create(o => o.Action(AppRoute.SubmitGridCreate.ToMethod(), AppRoute.SubmitGridCreate.ToController()))
        .Update(o => o.Action(AppRoute.SubmitGridUpdate.ToMethod(), AppRoute.SubmitGridUpdate.ToController()))
        .Destroy(o => o.Action(AppRoute.SubmitGridDestroy.ToMethod(), AppRoute.SubmitGridDestroy.ToController()))
    )
)

当我将 LastName 字段聚焦并打开以进行编辑时,我点击 Tab 打开 FirstName 字段进行编辑,它就是这样做的。但它会立即关闭 FirstName 字段进行编辑并再次关注 LastName 字段。当我注释掉.AutoSync(true)问题时,问题就消失了。

我认为它正在发生,因为异步 httprequest 回来了,并以某种方式与现场焦点搞砸了。

我该如何解决这个问题?

我会创建一个 JSFiddle,但它需要依赖 AJAX 数据源来显示问题。

4

1 回答 1

0

从 API 文档中,

[如果autoSync是]设置为true,数据源将通过调用同步方法自动保存任何更改的数据项。默认情况下,更改不会自动保存。

因此,当您跳出文本框时,数据源会将其注册为更改并触发异步更新。更新成功后,模型被反弹,视图被刷新。您确定在文本框或 JavaScript 上没有任何 HTML 属性会导致光标默认聚焦在那里(即autofocus{HTMLElement}.focus()?

于 2015-03-25T16:15:05.050 回答