0

我有一个可编辑Ext.grid.plugin.RowEditing的网格 ( ) 网格在一个表单中。表格显示在窗口中

由于通过显示窗口来显示表单,我想关注第一个可编辑行的第一列。

这是窗口的“显示”事件调用的方法

onWinShow : function (window, options) {

    var grid = this.down ('#myGrid');
    // focus on first field
    var rowEditStore = grid.getStore ();
    var rowEditor = grid.getPlugin ('rowEditplugin');

    rowEditor.cancelEdit ();

    var r = rowEditStore.getAt (0);
    rowEditor.startEdit (r, 1);
},

我检查了来源,RowEditing其中RowEditor有聚焦领域的逻辑。我可以看到焦点出现片刻然后消失,之后表单中的任何字段都没有焦点。

请建议我哪里出错了。

谢谢

4

1 回答 1

0

Extjs 中的窗口具有 defaultFocus 属性,允许您设置在打开窗口时哪个组件应该具有焦点。

如果该属性不能满足您的需要,我建议将您当前的焦点函数封装在 Ext.Function.defer 方法中,您将不得不查看您需要多少毫秒(测试您最慢的目标浏览器或使延迟浏览器依赖),这只会在窗口的默认焦点完成后使您的焦点发生:

onWinShow : function (window, options) {
    Ext.Function.defer(function (window, options) {

        var grid = this.down ('#myGrid');
        // focus on first field
        var rowEditStore = grid.getStore ();
        var rowEditor = grid.getPlugin ('rowEditplugin');

        rowEditor.cancelEdit ();

        var r = rowEditStore.getAt (0);
        rowEditor.startEdit (r, 1);
    }, 500, this);
}
于 2012-08-22T15:07:38.303 回答