2010-10-26 4 views
1

Au cours des 5 derniers mois, nous avons prototypé GWT et mis en place l'infrastructure. Nous utilisons GXT pour les widgets avec les implémentations MVP et Command Pattern. Cependant, nous cherchons actuellement à faire un pic sur un ComboBox avec autosuggest à partir d'une base de données en direct. Je voudrais le faire dans le cadre des implémentations MVP et Command pattern. Quelqu'un a-t-il des idées pour s'y prendre?Combobox dynamique Autosuggest dans GXT

Répondre

2

J'ai résolu cela en utilisant un DispatchDataProxy générique modélisé sur le modèle de commande. Merci pour le lien, mais la documentation de GXT laisse beaucoup à désirer, bien que le framework soit vraiment sympa et cool.

Je vais poster le code ici `DispatchDataProxy public class implémente DataProxy> {

@Inject 
private DispatchAsync dispatch ;//= new StandardDispatchAsync(new DefaultExceptionHandler()); 

@Override 
public void load(DataReader<ListLoadResult<X>> reader, Object loadConfig, final AsyncCallback<ListLoadResult<X>> callback) { 
    if (loadConfig instanceof BasePagingLoadConfig) { 
     BasePagingLoadConfig a = (BasePagingLoadConfig) loadConfig; 
     Map<String, Object> map = a.getProperties(); 
     Object data = map.get("query"); 

     XCommand action = new XCommand(); 
     action.setX((String) data); 

     dispatch.execute(action, new AsyncCallback<XResult>() { 

      @Override 
      public void onFailure(Throwable arg0) { 
       //Log.debug("Some error:" + arg0.getMessage()); 
       callback.onFailure(arg0); 
      } 

      @Override 
      public void onSuccess(XResult arg0) { 
       ListLoadResult<X> list = arg0.getList(); 
       callback.onSuccess(list); 
      } 
     }); 
    } 
} 

public DispatchAsync getDispatch() { 
    return dispatch; 
} 

public void setDispatch(DispatchAsync dispatch) { 
    this.dispatch = dispatch; 
} 

}`

Espoir son utile. Apprécieront également quelques commentaires

+1

+1 pour la mauvaise documentation ... – Guillaume

0

J'ai trouvé une solution pour la boîte combo simple, remplacer la méthode getValue:

public SimpleComboBox<String> createEditableSimpleComboBox() { 
     return new SimpleComboBox<String>() { 

      @Override 
      public SimpleComboValue<String> getValue() { 
       SimpleComboValue<String> v = super.getValue(); 
       String raw = getRawValue(); 
       if ((v == null || v.getValue() == null) && raw != null && !raw.isEmpty()) { 
        v = new SimpleComboValue<String>(raw){ 
         private static final long serialVersionUID = 1L; 
        }; 
       } 
       return v; 
      } 
     }; 

    } 

Maintenant, lorsque vous ajoutez à la méthode boîte valeur par défaut combo (non défini dans le magasin) getValue retourne cette valeur - pas nul.