0

編集可能なグリッドがあります(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);
},

私は、フィールドに焦点を合わせるためのロジックを持っているソースRowEditingをチェックしました。RowEditorフォーカスが一瞬現れて消えていくのが見えます。その後、フォームのフィールドにフォーカスがありません。

どこが間違っているのか教えてください。

ありがとう

4

1 に答える 1

0

The window in Extjs has the defaultFocus property that allows you to set which component should have focus when the window is opened.

If that property does not work for your needs, I would recommend encapsulating your current focus function in the Ext.Function.defer method like this and you will have to see how many milliseconds you need (test your slowest target browser or make the delay browser dependant), this will just make your focus happen after the window's default focus is done:

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 に答える