Интеграция Google App Engine с GWT Celltable для больших наборов данных - PullRequest
0 голосов
/ 11 июня 2011

В настоящее время я пытаюсь реализовать интерфейс gwt для моего веб-приложения, созданного на основе хранилища данных.Я хотел бы, чтобы что-то вроде моего AsyncServices (gin) получало данные с сервера и отображало эти данные в Celltable.Так как мои наборы данных могут быть очень большими, я бы хотел, чтобы эти данные выбирались каждый раз, когда пользователь нажимает на страницу вперед / кнопку.

private CellTable table = new CellTable(); scheduleTable = new CellTable();</p> <p>SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true); pager.setDisplay(table);</p> <p>provider = new AsyncDataProvider() { @Override protected void onRangeChanged(HasData display) { //TODO: Get and Show the appropriate data from GAE here! } };</p> <p>provider.addDataDisplay(table);

1 Ответ

1 голос
/ 25 июля 2011

Да, это возможно. И вот как я это сделал.

Реализация абстрактного пейджера. Мне пришлось создать составной виджет и инициализировать виджет в конструкторе.

Я использовал две кнопки и метку для перехода на предыдущую и следующую страницы и отображения страницы соответственно. И в clickHandler следующей кнопки я вызываю RPC и получаю список данных, которые я хочу показать. Затем добавьте этот список к существующему списку поставщика данных в таблице ячеек. Затем вызовите метод сброса поставщика данных. Это перенесет изменения на дисплей, который является таблицей ячеек. Если ваша таблица ячеек по-прежнему не отражает данные, которые должны, просто очистите поставщик данных еще раз или используйте setPageStart & setPageSize для таблицы и установите новый диапазон.

Вы должны переопределить onRangeOrRowCountChanged, здесь вы отображаете, на какой странице вы находитесь, и делаете все, что может понадобиться вашему пейджеру.

Для предыдущей кнопки просто наберите this.previous(), так как абстрактный пейджер предоставляет все необходимые функции. Вместо использования this.next() мы используем нашу собственную функцию для заполнения таблицы. и перейти к следующей странице.

...