2

ドロップダウンの値を取得してDBに保存するGWTビューがあります。ドロップダウンの値は「1」「2」「3」です。同じビューに戻り、DB に「Two」が保存されている場合は、「Two」を選択したアイテムにします。ただし、現時点でこれを機能させる唯一の方法は、リストボックス内の各アイテムを繰り返し処理して一致するアイテムを見つけ、これを選択したアイテムとして設定することです。これを達成するためのより良い方法はありますか?選択したインデックスを保存する必要はありません。

4

1 に答える 1

1

ListBox を拡張し、TakesValue インターフェイスを実装することをお勧めします。このクラスでは、ListBox 内のすべての項目を保持するリスト変数を維持します。setValue と getValue は、次のコード スニペットのようになります。

private List<String> listItems = new ArrayList<String>();

public class MyListBox extends ListBox implements TakesValue<String>
{
         public void setValue( String value )
         {
        if ( listItems.size() > 0 )
        {
            int valueIndex = 0;
            if ( listItems.contains( value ) )
            {
                valueIndex = listItems.indexOf( value );
                this.value = value;
            }
            setItemSelected( valueIndex, true );
        }
        }

        public String getValue()
        {
        int selectedIndex = super.getSelectedIndex();
        String value = null;
        if ( selectedIndex >= 0 )
        {
            value = super.getValue( selectedIndex );
            if ( "null".equals( value ) )
            {
                value = null;
            }
        }

        return value;
        }

        public void setOptions(List<String> options)
        {
              listItems.clear();
              listItems.addAll( items );
              for ( String item : listItems )
              {
                    addItem( item, item );
              }
        }
}

ビュー Java ファイルから listBox.setValue( value ) メソッドを呼び出すだけです。このオプションの前に設定する必要があります。

于 2013-02-26T03:32:13.403 に答える