2012-03-22 8 views
4

dojox.grid.DataGridに新しい空白行を追加していて、新しい行の最初のセルにフォーカスしたいとします。dojox.grid.DataGridに新しく追加された行の最初のセルにフォーカスする方法

は、私が呼び出すことで、行を追加します。

grid.focus.setFocusIndex(row_index, 0); 
grid.edit.setEditCell(grid.focus.cell, row_index); 

しかし、私は、グリッドが持っている後にのみ、このコードを呼び出す方法を見つけ出すことはできません:私は次のコードフォーカスを行いますと信じて

var new_row = {}, 
attributes = store.getAttributes(items[0]); 

dojo.forEach(attributes, function(attribute) 
{     
    dojo.forEach(attributes, function(attribute) 
    { 
     new_row[ attribute ] = null; 
    }); 

}); 

store.newItem(new_row); 

再レンダリングされる。私はイベントに接続する必要があると思う。しかし、私は使用する可能性のある出来事を見ることができません。 onNew()は、新しい行が追加される前に呼び出されたようです。

私が解決できるほど近いJSFiddleがあります。 http://jsfiddle.net/xDUpp/(行をコメントアウトし、編集をマークし、それが新しい行を追加します)道場の

+1

こんにちは、チェックアウト私の解決策は、答えに役立つことを願っています。 – keemor

答えて

7

バージョン

おかげに興味がありますか?

バージョン間でDojo APIが異なります。この問題では http://jsfiddle.net/keemor/xDUpp/11/

ストアが変更された後、グリッド自体を再構築するために少し時間が必要なので、setFocusIndex & setEditCellでも動作するように遅延させなければならない:で

ルック

store.onNew = function(new_item) { 
    var rowIndex = new_item._0;      
    window.setTimeout(function() { 
     grid.focus.setFocusIndex(rowIndex, 0); 
     grid.edit.setEditCell(grid.focus.cell, rowIndex); 
    },10);  

}; 

Greetz

+0

私は1.6.1を使用しています - ありがとう。 voidstate – voidstate

+0

ありがとうkeemor。私はあなたが提供したものに基づいて最初の投稿にJSFiddleを追加しました。 – voidstate

関連する問題