Использование EXT-GWT ComboBox - PullRequest
0 голосов
/ 08 апреля 2011

расширяю ComboBox и в конструкторе есть такой код:

ModelType type = new ModelType();  
type.setRoot("data");
type.addField("id", "id");
type.addField("name", "name");

JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult<ModelData>>(type);

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "/category/getall");
HttpProxy<String> proxy = new HttpProxy<String>(builder);

BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);

ListStore<ModelData> store = new ListStore<ModelData>(loader);


setStore(store);
loader.load();
setValueField("id");
setDisplayField("name");
setName("categoty");

Результат: ajax-запрос отправляется на сервер, но результаты не отображаются в выпадающем списке, но при нажатии на него он снова загружает данные, а затем отображает их, и как установить значение в выпадающий список?

1 Ответ

0 голосов
/ 22 июня 2011

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

setStore(_createListStore("/category/getall", "data", "id", "name"));
loader.load();
setValueField("id");
setDisplayField("name");
setName("categoty");

ошибка в вашем коде состоит в том, что вы добавляете два поля в ModelType, вместо этого вам следует добавить только одно поле с "id" в качестве значения и "name"как дисплей

protected ListStore<ModelData> _createListStore(String url, String root, String fieldValue, String displayValue){
    ModelType mt = new ModelType();
    mt.setRoot(root);
    mt.addField(displayValue, fieldValue);
    RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
    HttpProxy<String> proxy = new HttpProxy<String>(rb);
    JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult<ModelData>>(mt);
    final BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);
    ListStore<ModelData> store = new ListStore<ModelData>(loader);
    return store;
}
...