2013-02-25 89 views
2

我有一個GWT視圖,從中獲取下拉列表的值並將其存儲在數據庫中。下拉列表中的值爲「一個」「兩個」「三個」。當我回到相同的視圖,並且我在數據庫中存儲了「兩個」時,我希望「兩個」成爲所選項目。然而,我現在可以做到這一點的唯一方法是迭代列表框中的每個項目以找到匹配的項目,然後將其設置爲選定項目。有沒有更好的方法來實現這一目標?我不想保存選定的索引。在GWT中選擇列表框下拉項目

+0

您正在使用哪個「下拉列表」? GWT的'ListBox'或'ValueListBox'? GXT的ComboBox?還有別的嗎? – 2013-02-25 23:12:43

回答

1

我建議你擴展ListBox並實現TakesValue接口。並且在這個類中維護一個列表變量,它包含列表框中的所有項目。 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(價值)方法調用的問題。在此之前必須設置這些選項。

+0

整潔的想法,將嘗試 – MayoMan 2013-02-26 09:50:02

+0

它甚至不編譯: 1.'this.value = value;'值沒有在類中聲明爲實例變量; 2.'listItems.addAll(items);''items'永遠不會被聲明。 3.方法'setOptions'沒有使用,它不清楚在哪裏以及如何使用它。 – belgoros 2018-02-14 10:06:30

相關問題