我正在尝试使用从在线API检索的数据来填充GXT网格(例如,访问www.example.com/documents会返回JSON文档数组)。另外,我需要对结果进行分页。
我已经阅读了所有各种博客和教程,但大多数都使用类似TestData.GetDocuments()
的内容来填充分页代理。但是,我想使用HTTP GET获取该信息。
我设法填充网格,但没有分页,使用RequestBuilder +代理+阅读器+加载器。但似乎数据的实际加载被“推迟”,直到GXT代码深处的某个隐藏阶段。分页从一开始就需要数据,所以我不知道该怎么做。
有人可以提供一个简单的代码示例来满足我的需求吗?
谢谢。
答案 0 :(得分:0)
我设法做到了这一点,这就是我所做的:
首先,我为我的数据定义了代理和加载器以及分页工具栏:
private PagingModelMemoryProxy proxy;
private PagingLoader<PagingLoadResult<ModelData>> loader;
private PagingToolBar toolBar;
接下来是每个的创建,用空的ArrayList初始化。
proxy = new PagingModelMemoryProxy(new ArrayList<EquipmentModel>());
loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy);
loader.setRemoteSort(true);
toolBar = new PagingToolBar(100);
toolBar.bind(loader);
loader.load(0, 100);
最后,我在视图中有一个set方法,当AJAX调用完成时会调用它,但你可以在任何地方触发它。这是我的整套方法,Equipment和EquipmentModel分别是我的数据库和视图模型。
public void setEquipmentData(List<Equipment> data)
{
Collections.sort(data);
// build a list of models to be loaded
List<EquipmentModel> models = new ArrayList<EquipmentModel>();
for (Equipment equipment : data)
{
EquipmentModel model = new EquipmentModel(equipment);
models.add(model);
}
// load the list of models into the proxy and reconfigure the grid to
// refresh display.
proxy.setData(models);
ListStore<EquipmentModel> equipmentStore = new ListStore<EquipmentModel>(loader);
equipmentGrid.reconfigure(equipmentStore, equipmentColumnModel);
loader.load(0, 100);
}
这里的关键是使用相同的加载器重新创建商店,列模型已预先创建并重新使用。