我设法做到了,这就是我所做的:
首先我为我的数据定义了代理和加载器以及分页工具包:
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 调用完成时会调用它,但您可以在任何地方触发它。这是我的整个set方法,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);
}
对我来说,这里的关键是使用相同的加载器重新创建商店,列模型是预先创建的并且可以重复使用。