Vaadin zone de liste déroulante avec les valeurs et les Id
J'ai défini un ComboBox
qui permet à l'utilisateur de sélectionner un contact à partir de sa liste de contacts. La zone de liste déroulante affiche le nom du contact, mais qui ne peut pas vraiment être utilisé pour mapper le contact réel: l'ID contact est nécessaire. Mon problème est que je ne sais pas comment faire pour remplir le Vaadin
ComboBox
associé à des valeurs et d'Id, mais seulement en montrant les valeurs.
//Add all organization contacts to the drop-down
for (Contact contact : organizationContacts) {
contactName = contact.getName();
contactId = contact.getId();
_logger.debug("Adding contactName=" + contactName + " contactId=" + contactId + " to person with id=" + personId);
contactNameCombo.addItem(contactName);
}
//Add the contact of this person, and select it in the drop-down
contactName = person.getContact().getName();
contactId = person.getContact().getId();
contactNameCombo.addItem(contactName);
contactNameCombo.setValue(contactName);
Comme vous pouvez le voir dans le code ci-dessus, je suis en ajoutant le contactName
à la ComboBox
, mais je ne sais pas comment ajouter également le contactId
afin que je puisse connaître plus tard, à partir de l'entrée sélectionnée, l'ID doit être utilisé pour mettre à jour la base de données.
OriginalL'auteur dangonfast | 2012-05-30
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs façons de procéder : le plus flexible, ici, est de configurer la zone de liste déroulante pour utiliser une propriété nommée comme une légende.
Voir Livre De Vaadin sur la Sélection d'Articles pour plus de détails.
Cette solution ne fonctionne pas pour moi non plus, veuillez jeter un oeil à ma proposition. Je ne sais pas quelle version de vaadin vous utilisez ;[
OriginalL'auteur Charles Anthony
La solution donnée par @Charles Anthony n'a pas fonctionné pour moi non plus, cependant sur le livre de vadin page web ( https://vaadin.com/book/-/page/components.selecting.html ), j'ai trouvé le code suivant:
qui fonctionne pour moi.
J'ai résolu mon problème, il suffit de faire attention à ne pas utiliser setItemCaptionPropertyId, cela va remplacer n'importe quel manuel de setItemCaption code, même si setItemCaption est appelée après setItemCaptionPropertyId
OriginalL'auteur BlueLettuce16
Vaadin 7:
OriginalL'auteur Amit S
Charles Anthony est absolument droit.
Vous pouvez également prendre l'avantage d'un Conteneur comme BeanContainer ou BeanItemContainer par exemple (plus d'informations ici) pour ajouter votre objet de contact à votre liste déroulante.
Vous aurez besoin pour remplir votre récipient et ajouter avec
de votre zone de liste déroulante.
Si vous utilisez un BeanContainer vous pouvez définir sur le conteneur de la propriété de votre pièce d'identité avec setBeanIdProperty(Object o). Si vous utilisez un BeanItemContainer vous souhaitez obtenir votre "plein" de l'objet de Contact.
OriginalL'auteur nexus