2011-04-20 69 views
0

我想使用从在线API检索的数据来填充GXT网格(例如,去www.example.com/documents返回一个JSON数组文件) 。另外,我需要对结果进行分页。GXT(Ext-GWT)+分页+ HTTP GET

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

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

有人可以提供一个简单的代码示例,做我所需要的吗?

谢谢。

回答

0

我设法弄到这是怎么回事,这里是我做过什么:

首先我定义了我的数据代理和装载机与寻呼toolbat一起:

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); 

最后,我在我的视图中设置了一个方法,当AJAX调用完成时调用,但您可以在任何地方触发它。这里是我的整套方法,Equipment and 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); 
} 

这里的关键是用相同的加载程序重新创建商店,列模型是预先创建的并且被重用。