将可编辑网格的行聚焦在表单中

时间:2012-08-22 10:57:11

标签: extjs extjs4 extjs4.1 extjs-mvc

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

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

这是窗口'show'事件所需的方法

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);
},

我检查了RowEditingRowEditor的来源,它具有聚焦字段的逻辑。 我可以看到焦点出现片刻然后消失,之后没有任何形式的焦点。

请说明我哪里出错了。

由于

1 个答案:

答案 0 :(得分:0)

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

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

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);
}