Динамический автозаполненный Combobox в GXT - PullRequest
1 голос
/ 26 октября 2010

За последние 5 месяцев мы создавали прототипы GWT и настраивали инфраструктуру.Мы используем GXT для виджетов с реализациями MVP и Command Pattern.Однако в настоящее время мы ищем всплеск ComboBox с автозаполнением из действующей базы данных.Я хотел бы сделать это в рамках реализации шаблонов MVP и Command.У кого-нибудь есть идеи, как это сделать?

Ответы [ 3 ]

2 голосов
/ 16 декабря 2010

Я решил, что с помощью универсального DispatchDataProxy, смоделированного по шаблону команды. Спасибо за ссылку, но документация GXT оставляет желать лучшего, хотя фреймворк действительно хорош и крут.

Я опубликую код здесь `открытый класс DispatchDataProxy реализует 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;
}

} `

Надеюсь, это полезно. Буду признателен также за некоторые комментарии

0 голосов
/ 22 марта 2013

Я нашел решение для простого поля со списком, переопределил метод 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;
            }
        };

    }

Теперь, когда вы добавляете в поле со списком значение по умолчанию (не определено в хранилище), метод getValue возвращает это значение - не ноль.

0 голосов
/ 03 декабря 2010

Вы смотрели здесь?

http://www.sencha.com/examples-2/explorer.html#advancedcombobox

Они показывают нечто подобное. Проблема с GXT в том, что вам лучше использовать их DataProxy, потому что вам нужно установить экземпляр ModelData.

...