2009-09-17 16 views
0

Spring + GWTを使用してリストボックス内のアイテムを事前選択(setSelectedIndex(index))することに疑問がありました。GWT - ListBox - アイテムの事前選択

私はパネルを含むダイアログを得ました。このパネルにはFlexPanelがあり、そこにはListBoxをいくつか入れました。これは私のデータベースのデータで埋められています。

しかし、このパネルはデータベース内のエンティティを更新するためのものです。したがって、このアイテムの現在のプロパティを事前に選択してユーザーが自由に変更できるようにしたかったのです。

私はウィジェットの更新方法で補充します。

更新メソッドでselectedItemを設定しようとしましたが、エラーが発生しました。

私はいくつかの場所を検索しましたが、ListBoxは表示の正確な時点でのみ表示されるようです。したがって、事前選択は不可能であろう。

私はいくつかのイベントについて考えました。これはページが表示されたときに発生します。

のonLoad()doesntの仕事..

誰もがここで私を助けるために何かを持っていますか?

答えて

3

私は本当にあなたと思っていますは、それが添付されて表示される前に選択を設定しますが、インデックスを選択する前にデータを追加する必要があります。これは、あなたがこのような何かを書くことができ、単一の選択ボックスである場合:

void updateListContent(MyDataObject selected, List<MyDataObject> list){ 
    for (MyDataObject anObject : list) { 
      theListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList()); 
    } 
    theListBox.setSelectedIndex(list.indexOf(selected)); 
} 

これは、複数の選択ボックスである場合にはこのようなものは動作可能性があります

void updateListContent(List<MyDataObject> allSelected, List<MyDataObject> list){ 
    for (MyDataObject anObject : list) { 
      theMultipleListBox.addItem(anObject.getTextToDisplay(), anObject.getKeyValueForList()); 
    } 
    for (MyDataObject selected : allSelected) { 
     theMultipleListBox.setItemSelected(list.indexOf(selected), true); 
    } 
} 

(私は実際にこれをコンパイルしていない注意をそして、これはタイプミスの可能性があります。これは選択された要素が実際に値のリストに存在することを前提としていますので、確信が持てない場合は、いくつかの境界チェックを追加する必要があります)

0

私は喜んで値と選択インデックスの両方を添付する前に設定しています私がそれがうまくいくはずであることを知っている限り。 IE上で選択したインデックスを-1に設定すると、バグがあります。http://code.google.com/p/google-web-toolkit/issues/detail?id=2689を参照してください。

0

事前選択はsetValue() - 関数でも機能します。したがって、複雑なコードは必要ありません。

0
private void setSelectedValue(ListBox lBox, String str) { 
    String text = str; 
    int indexToFind = -1; 
    for (int i = 0; i < lBox.getItemCount(); i++) { 
     if (lBox.getValue(i).equals(text)) { 
      indexToFind = i; 
      break; 
     } 
    } 
    lBox.setSelectedIndex(indexToFind); 
} 
関連する問題