GWT, как настроить пейджер в DataGrid при использовании Objectify Cursors

Недавно я дошел до того, что могу получать данные с помощью курсора (см. эту ссылку: GWT передает Objectify Cursor от сервера к клиенту с помощью RequestFactory и показывает больше страниц в DataGrid)

с чем я сталкиваюсь - когда я получаю пакет данных на стороне клиента, это только список из 25 - когда я иду, чтобы установить данные в DataGrid, пейджер внизу говорит, что показывает 1-25 из 25, очевидно, есть больше записи в базе данных, я просто извлекаю 25 из них за раз с помощью курсора

То, что я пытался сделать, это установить следующее:

pager.setRangeLimited(false);

К сожалению, хотя это позволяет мне просматривать страницы и выбирать больше из базы данных, на самом деле это никогда не дает мне сумму в базе данных. Мне интересно, если я использую курсор на стороне сервера - как мне установить общий счет в пейджере??

Одна вещь, о которой я подумал, это просто добавить переменную общего количества в объект-оболочку ListCursor, который я возвращаю. ужасно неэффективно - и затем, как только я верну это, я до сих пор понятия не имею, как на самом деле сказать пейджеру, что доступно больше данных, чем я на самом деле дал.

Любая помощь в этом будет очень признательна


person sean christe    schedule 16.06.2012    source источник


Ответы (1)


Вы устанавливаете общее количество в пейджере, сообщая пейджеру, что количество строк точное:

asyncDataProvider.updateRowCount(int size, boolean exact);

Если вы не сообщите пейджеру, что количество строк точное, вы, очевидно, не сможете перейти на последнюю страницу.

Основная проблема заключается в том, как получить общее количество строк. Запрос количества строк действительно крайне неэффективен. Лучше было бы держать в хранилище данных счетчик, который отслеживает количество записей. Это также может быть довольно неэффективным, потому что у вас есть приращение этого счетчика, синхронизированное/транзакционное.

В моем проекте я не отслеживаю точное количество строк, но предоставляю гибкие параметры поиска.

person koma    schedule 16.06.2012