2010-09-25 5 views
6

J'essaie de comprendre comment lier un événement javascript à un élément select dans GWT, mais l'élément select n'est pas construit dans GWT, mais vient du HTML que je suis en train de gratter d'un autre site (un site de rapport d'un département différent). Tout d'abord, un peu plus de détails:Liaison aux éléments HTML dans GWT

J'utilise GWT et en charge, je fais un appel ajax pour obtenir du code HTML qui inclut, entre autres choses, un rapport que je veux mettre sur ma page. Je suis capable d'obtenir le HTML et d'analyser la div qui m'intéresse. C'est facile à afficher sur ma page.

Voici où je suis coincé: Sur la partie de la page que j'utilise, il y a un élément de sélection que je peux facilement trouver (il a un ID), mais qui voudrait capturer l'événement si mon utilisateur change cette valeur Je veux capturer des changements à la boîte de sélection ainsi je peux faire un autre appel d'ajax pour remplacer le rapport, lier à la sélection sur cette page, et recommencer le processus entier). Donc, je ne sais pas comment, une fois que j'obtiens le code HTML d'un site distant, comment lier un gestionnaire d'événements à une entrée sur ce fragment, puis insérez le fragment dans mon div cible. Tout conseil ou pointeur serait grandement apprécié!

+0

Le composant dont vous parlez est fabriqué à partir de Javascript? Si oui, provient-il d'une bibliothèque spéciale? – Guilherme

Répondre

9

Que diriez-vous ceci:

Element domSelect = DOM.getElementById("selectId"); 
ListBox listBox = ListBox.wrap(domSelect); 
listBox.addChangeHandler(new ChangeHandler() { 
    void onChange(ChangeEvent event) { 
     // Some stuff, like checking the selected element 
     // via listBox.getSelectedIndex(), etc. 
    } 
}); 

Vous devriez obtenir l'idée générale - envelopper l'élément <select> dans un ListBox. À partir de là, il suffit d'ajouter un ChangeHandler via la méthode addChangeHandler.

+1

Au lieu d'utiliser "new ListBox (domSelect)", l'astuce consiste à appeler "ListBox.wrap (domSelect)". Fonctionne comme un charme! Merci Igor! –