2013-02-15 11 views
5

साथ एक combobox में लेख जोड़ने मैं एक vaadin बता गया एक containerdatasourceएक डेटा स्रोत

setContainerDataSource(container); 

मैं अब परिणामों की सूची में कहीं न कहीं एक स्थिर पाठ सम्मिलित करना चाहते हैं से भर जाता है कि है।


उदाहरण के लिए:

एक combobox के एक कंटेनर और पहली प्रविष्टि है कि परिणाम सूची में पॉप-अप होने से भर जाता है कि शीर्ष लेख किसी तरह का है:

व्यक्तियों:
थॉमस एस ।
लुकास बी
एलेक्स एक्स

मैं प्राप्त कर सकते हैं कि या तो द्वारा कंटेनर या कॉम से छेड़छाड़ bobox?

मैंने अभी कंटेनर स्रोत सेट करने और कॉम्बोबॉक्स में addItem() के माध्यम से एक स्ट्रिंग/लेबल जोड़ने की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। मैं इसके लिए बहुत नया हूं, इसलिए मुझे नहीं पता कि कैसे जारी रखना है।

+0

यदि आपने अभी तक जो भी प्रयास किया है या आपने अभी तक शोध किया है, तो यह आपकी सहायता कर सकता है। –

+0

मैंने अभी कंटेनर स्रोत सेट करने और कॉम्बोबॉक्स में addItem() के माध्यम से एक स्ट्रिंग/लेबल जोड़ने की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं करता है। मैं इसके लिए बहुत नया हूं, इसलिए मुझे नहीं पता कि कैसे जारी रखना है। – luuksen

उत्तर

0

आपको कंटेनर में बदलाव करना चाहिए (उदाहरण के लिए: आइटम जोड़ें ...) और कम्बोबॉक्स पर सेट कॉन्टेनरडेटासोर्स (कंटेनर) को कॉल करें (इसलिए यह क्लाइंट को प्रचारित हो जाता है)।

+0

ने कोशिश की कि इसके अलावा, मेरे पास कंटेनर व्यक्तियों से भरा है और कंटेनर की कोशिश की है .addItem (नया सिंग ("परीक्षण")); "परीक्षण" सूची में नहीं दिखाया जाएगा, लेकिन शेष कंटेनर होगा। – luuksen

+0

कृपया अपना कोड प्रश्न टेक्स्ट में जोड़ें ... –

2

यदि आपका कोड इस के समान है:

BeanItemContainer<Person> container = new BeanItemContainer<Person>(Person.class); 
container.addAll(myPersonList); 
ComboBox combobox = new ComboBox(); 
combobox.setContainerDataSource(container); 
combobox.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); 
combobox.setItemCaptionPropertyId("name"); // the person's name field will be shown on the UI 

// imho if you want to add a static text (String) into a container 
// which populated with Person objects then you have to make a fake Person object 
Person staticText = new Person(); 
staticText.setName("My static text"); 
combobox.addItem(staticText); 
// if you want to specify the index of the item, add them one by one in for cycle 
// and insert the static text item in the appropritate place 
6

आप तत्काल के रूप में ComboBox उपयोग कर रहे हैं और "व्यक्ति:" नहीं करना चाहते हैं एक वास्तविक व्यक्ति के रूप में नियंत्रित किया जा करने के लिए, आप करने के लिए इस्तेमाल कर सकते हैं setNullSelectionItemId नकली व्यक्ति को एक असली डमी ऑब्जेक्ट के रूप में परिभाषित करें। हालांकि, इस समाधान में सीमा है कि आप केवल एक डमी ऑब्जेक्ट जोड़ सकते हैं।

यहां मेरा उदाहरण है जो सूची के शीर्ष पर "व्यक्ति:" जोड़ता है और इसे शून्य मान के रूप में संभालता है। ध्यान दें कि मैं वाडिन 7 का उपयोग कर रहा हूं।

import com.vaadin.data.Property; 
import com.vaadin.data.Property.ValueChangeEvent; 
import com.vaadin.data.util.BeanItemContainer; 
import com.vaadin.server.VaadinRequest; 
import com.vaadin.ui.AbstractSelect; 
import com.vaadin.ui.ComboBox; 
import com.vaadin.ui.Notification; 
import com.vaadin.ui.UI; 
import com.vaadin.ui.VerticalLayout; 

/** 
* The Application's "main" class 
*/ 
@SuppressWarnings("serial") 
public class MyVaadinUI extends UI { 

    @Override 
    protected void init(VaadinRequest request) { 
     final VerticalLayout layout = new VerticalLayout(); 
     layout.setMargin(true); 
     setContent(layout); 

     BeanItemContainer<Person> container = new BeanItemContainer<Person>(Person.class); 
     Person nullPerson = new Person(0, "Person:"); 
     container.addBean(nullPerson); 
     container.addBean(new Person(1, "Django")); 
     container.addBean(new Person(2, "Schultz")); 

     ComboBox combobox = new ComboBox(); 
     combobox.setImmediate(true); 
     combobox.setNullSelectionItemId(nullPerson); // Define the null person as a dummy. 
     combobox.setContainerDataSource(container); 
     combobox.setItemCaptionMode(AbstractSelect.ItemCaptionMode.PROPERTY); 
     combobox.setItemCaptionPropertyId("name"); // the person's name field will be shown on the UI 
     combobox.addValueChangeListener(new Property.ValueChangeListener() { 
      @Override 
      public void valueChange(ValueChangeEvent event) { 
       // Will display 'null selected' when nullPerson is selected. 
       Notification.show(event.getProperty().getValue() + " selected"); 
      } 
     }); 

     layout.addComponent(combobox); 
    } 
} 
+0

ग्रेट लेकिन मैं जानना चाहता हूं कि परिणामस्वरूप व्यक्ति की आईडी कैसे प्राप्त करें – Bourkadi

संबंधित मुद्दे