Java 使用EXT-GWT组合框
我扩展了组合框,在构造函数中有这样的代码:Java 使用EXT-GWT组合框,java,gwt,gxt,Java,Gwt,Gxt,我扩展了组合框,在构造函数中有这样的代码: ModelType type = new ModelType(); type.setRoot("data"); type.addField("id", "id"); type.addField("name", "name"); JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult
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");
ModelType type=newmodeltype();
setRoot类型(“数据”);
type.addField(“id”、“id”);
type.addField(“名称”、“名称”);
JsonLoadResultReader=新的JsonLoadResultReader(类型);
RequestBuilder=newrequestbuilder(RequestBuilder.GET,“/category/getall”);
HttpProxy代理=新的HttpProxy(生成器);
BaseListLoader=新的BaseListLoader(代理、读卡器);
ListStore=新的ListStore(加载器);
设置存储(存储);
loader.load();
setValueField(“id”);
setDisplayField(“名称”);
设置名称(“类别”);
结果:ajax查询发送到服务器,但在combobox中看不到结果,但当单击它时,它会再次加载数据并显示它,以及如何将值设置为combobox?我创建了一个简单的存储工厂方法,可以解决您的问题。 在类中复制并创建存储:
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;
}
protectedliststore\u createListStore(字符串url、字符串根、字符串字段值、字符串显示值){
ModelType mt=新ModelType();
山毛根(根);
mt.addField(显示值、字段值);
RequestBuilder rb=新的RequestBuilder(RequestBuilder.GET,url);
HttpProxy代理=新的HttpProxy(rb);
JsonLoadResultReader=新的JsonLoadResultReader(mt);
最终BaseListLoader=新BaseListLoader(代理、读卡器);
ListStore=新的ListStore(加载器);
退货店;
}
在触发查询之前是否呈现组合框?是否尝试调用layout()方法。我通常在调用load()之前设置value字段和display字段,但从未使用JSON objectsYep,我尝试在呈现带有该组合框的窗口后调用load(),同样的问题,如何将数据加载到组合框并选择默认值?