2016-05-09 12 views
1

に焦点を置くListGrid: は、私がこのように定義されたListGridを持ってFilterEditor

ListGrid lgrid = new ListGrid(); 
ListGridField first = new ListGridField("first",first"); 
ListGridField second = new ListGridField("second ",second "); 
lgrid.setFields(first, second); 
lgrid.setShowFilterEditor(true); 

¿どのようにレイアウトに()私は ショーを呼び出した後の最初のフィルタエディタフィールドにをキーボードフォーカスを置くことができますか?

Thxです。

// Put the focus on the first listGrid field when is loaded  
    listGrid.addDataArrivedHandler(new DataArrivedHandler() { 
     @Override 
     public void onDataArrived(DataArrivedEvent event) { 
       Timer t = new Timer() { 
        public void run() {  
         if(listGrid.getFilterEditorCriteria() == null){ 
          listGrid.focusInFilterEditor("fieldToFocus"); 
         } 
        } 
       }; 
       t.schedule(600); 
     } 
    }); 

答えて

1

があなたのユースケースが何であるかに応じて、(に有用であろう:私は解決策を持って

0

は、そのfocusInFilterEditorが、これはデータがグリッドに着いた後にフォーカスを設定する例です。 ListGridをスクロールすると、新しいデータフェッチがトリガーされて(表示するレコードがさらにある場合)、カーソルを次の場所に移動することができるため、実際に必要なものは表示されない可能性があります。フィルタエディタを使用します(ユーザがその時点でいくつかのレコードを編集している場合、カーソルがフィルタ行に移動するのは、自分が望むものではありません!!)。

このような場合、あなたはおそらく、あなたがいない、とにかく

など、listGrid.show()ステートメントの後、またはあなたがデータをフェッチするために使用するいくつかのボタンのはclickHandlerにgrid.focusInFilterEditor("fieldToFocus")を呼び出したいですTimerも必要です。作品:

listGrid.addDataArrivedHandler(new DataArrivedHandler() { 
    @Override 
    public void onDataArrived(DataArrivedEvent event) { 
     grid.focusInFilterEditor("fieldToFocus"); 
    } 
}); 
関連する問題