Bonjour,
J'ai une ComboBox qui doit être automatiquement remplie par un service. Cependant, je ne sais pas comment faire ça.
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ComboBox maCombo = new ComboBox(); maCombo.setMinChars(3); maCombo.setValidationDelay(2000); maCombo.setWidth(300); maCombo.setListWidth(getWidth()*2); maCombo.setReadOnly(false); maCombo.setHideTrigger(true); maCombo.setMode(ComboBox.REMOTE); maCombo.setResizable(true); maCombo.setLoadingText("Chargement ...");
Donc comme on voit ici, l'action ne doit se déclencher qu'à partir de 3 caractères saisis et 2 secondes sans action.
Je voudrais alors pouvoir appeler mon service en mode Asynchrone et mettre à jour le contenu de mon Store par rapport à ses trois caractères. D'autre part, cela veut dire que la ComboBox ne cherche pas elle-même dans mon Store les résultats qui peuvent correspondre à la recherche (puisque ce sont déjà les bons).
Comment puis-je faire ? Je suis un peu perdue avec GWT-EXT...
Pour l'instant j'ai fait ceci :
J'initialise donc avec un Store vide dans un premier temps
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 final SimpleStore store = new SimpleStore(new String[] {"label", "email"}, new Object[0][2]); store.setDefaultSort("label", SortDir.ASC); store.setAutoLoad(true); store.load(); maCombo.setStore(store);
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 maCombo.addListener( new ComboBoxListenerAdapter() { @Override public void onValid(Field field) { final String value = getRawValue(); if (value.length() >= 3 && (lastValue == null || !value.contains(lastValue))) { lastValue = value; service.search( value, new AsyncCallback<Set<CUtilisateur>>() { public void onFailure(Throwable exception) { Window.alert("FAILURE"); } public void onSuccess(Set<CUtilisateur> users) { Window.alert("SUCCESS"); Object storeUsers[][] = new Object[users.size()][2]; for (final CUtilisateur user : users) { storeUsers[storeUsers.length] = new Object[] { user.getLabel(), user.getEmail() }; } store.setDataProxy(new MemoryProxy(storeUsers)); maCombo.setStore(store); maCombo.expand(); } } ); } } } );
PS : Je ne connais pas les versions de GWT et GWT-EXT utilisées, comment puis-je les connaître à votre avis ?
Partager