2011-04-20 110 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); 
} 

這裏的關鍵是用相同的加載程序重新創建商店,列模型是預先創建的並且被重用。