2013-02-25 3 views
2

GWT보기에서 드롭 다운 값을 가져 와서 DB에 저장합니다. 드롭 다운의 값은 "one" "two" "three"입니다. 동일한보기로 돌아가서 DB에 "Two"가 저장되어 있으면 "Two"가 선택된 항목이됩니다. 그러나이 작업을 지금 당장 수행 할 수있는 유일한 방법은 목록 상자의 각 항목을 반복하여 일치하는 항목을 찾은 다음 선택한 항목으로 설정하는 것입니다. 이것을 달성하기위한 더 좋은 방법이 있습니까? 선택한 색인을 저장하지 않아도됩니다.GWT에서 목록 상자 드롭 다운 항목 선택

+0

어떤 드롭 다운을 사용하고 있습니까? GWT의'ListBox' 또는'ValueListBox'? GXT의 'ComboBox'? 다른 것? –

답변

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); 
       } 
     } 
} 

지금보기 자바 파일에서 listBox.setValue (값) 메서드 호출을하고 그것의 단지 문제. 이 옵션을 사용하려면 먼저 옵션을 설정해야합니다.

+0

깔끔한 아이디어, 시도 할 것입니다 – MayoMan

+0

컴파일하지 않습니다 : 1. 'this.value = value;'값은 클래스에서 인스턴스 변수로 선언되지 않습니다. 2.'listItems.addAll (items);''items'는 절대로 선언되지 않습니다. 3. 메소드'setOptions'가 사용되지 않고 어디서 어떻게 사용하는지 명확하지 않습니다. – belgoros

관련 문제