GXT (Ext-GWT) + пагинация + HTTP GET - PullRequest
0 голосов
/ 20 апреля 2011

Я пытаюсь заполнить GXT Grid, используя данные, полученные из онлайн-API (например, переход на www.example.com/documents возвращает массив документов JSON).Кроме того, мне нужно разбить результат на страницы.

Я прочитал все различные блоги и учебные пособия, но большинство из них заполняют прокси-сервер нумерации страниц, используя что-то вроде TestData.GetDocuments().Однако я хочу получить эту информацию с помощью HTTP GET.

Мне удалось заполнить сетку, но без разбивки на страницы, используя RequestBuilder + прокси + ридер + загрузчик.Но кажется, что фактическая загрузка данных «откладывается» до некоторой скрытой стадии глубоко внутри кода GXT.Нумерация страниц требует данных с самого начала, поэтому я не уверен, что делать.

Может ли кто-нибудь предоставить простой пример кода, который делает то, что мне нужно?

Спасибо.

1 Ответ

0 голосов
/ 13 июня 2011

Мне удалось это сделать, вот что я сделал:

Сначала я определил прокси и загрузчик для моих данных вместе с пейджинговой панелью инструментов:

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

Для меня ключевым моментом было воссоздание магазина с тем же загрузчиком, модель столбца была предварительно созданаи используется повторно.

...