GXT(Ext-GWT)+分页+ HTTP GET

时间:2011-04-20 13:36:29

标签: gwt pagination gxt

我正在尝试使用从在线API检索的数据来填充GXT网格(例如,访问www.example.com/documents会返回JSON文档数组)。另外,我需要对结果进行分页。

我已经阅读了所有各种博客和教程,但大多数都使用类似TestData.GetDocuments()的内容来填充分页代理。但是,我想使用HTTP GET获取该信息。

我设法填充网格,但没有分页,使用RequestBuilder +代理+阅读器+加载器。但似乎数据的实际加载被“推迟”,直到GXT代码深处的某个隐藏阶段。分页从一开始就需要数据,所以我不知道该怎么做。

有人可以提供一个简单的代码示例来满足我的需求吗?

谢谢。

1 个答案:

答案 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);
}

这里的关键是使用相同的加载器重新创建商店,列模型已预先创建并重新使用。