simplePagination
simplePagination - это компонент для постраничной загрузки данных. Он предназначен для совместного использования с компонентами dataGrid и treeDataGrid.
- 
XML-элемент: simplePagination
- 
Java-класс: SimplePagination
Основы
simplePagination имеет простой экран с отображением количества строк и кнопками навигации.
Также может содержать выпадающий список для выбора количества элементов на странице.
 
По умолчанию Jmix Studio генерирует simplePagination при создании StandardListView для сущности.
<data readOnly="true">
    <collection id="usersDc"
                class="com.company.onboarding.entity.User">
        <fetchPlan extends="_base">
            <property name="department" fetchPlan="_base"/>
        </fetchPlan>
        <loader id="usersDl">
            <query>
                <![CDATA[select e from User e order by e.username]]> (1)
            </query>
        </loader>
    </collection>
</data>
<layout expand="usersTable">
        <simplePagination itemsPerPageVisible="true"
                          id="simplePagination"
                          dataLoader="usersDl"/> (2)
</layout>| 1 | Определяем загрузчик коллекции для загрузки сущностей User. | 
| 2 | Связываем simplePaginationс данными через атрибутdataLoader. | 
Количество элементов на странице
Компонент simplePagination содержит специальный comboBox с вариантами ограничения количества элементов на странице. Для его отображения установите атрибут itemsPerPageVisible в значение true. По умолчанию: false.
 
Значения по умолчанию для этого списка задаются в свойстве jmix.ui.component.pagination-items-per-page-items.
Вы можете настроить собственный список вариантов через атрибут itemsPerPageItems. Значение должно быть списком чисел, разделенных запятыми:
<simplePagination dataLoader="usersDl"
                  itemsPerPageVisible="true"
                  itemsPerPageItems="2, 4, 6"/>Варианты со значением, меньшим или равным 0, игнорируются. Варианты, превышающие максимально допустимый размер выборки сущности, заменяются на максимальное значение.
Для установки значения по умолчанию используйте атрибут itemsPerPageDefaultValue:
<simplePagination dataLoader="usersDl"
                  itemsPerPageVisible="true"
                  itemsPerPageItems="2, 4, 6"
                  itemsPerPageDefaultValue="4"/>Атрибут itemsPerPageUnlimitedItemVisible управляет отображением варианта null в comboBox. По умолчанию: true.
При выборе null-варианта компонент попытается загрузить все данные в пределах ограничения максимально допустимого размера выборки.
| Максимально допустимый размер выборки для всех сущностей определяется свойством jmix.ui.default-max-fetch-size (по умолчанию 10000). Для конкретной сущности можно задать отдельное ограничение через jmix.ui.entity-max-fetch-size. | 
Атрибуты
id - alignSelf - autoLoad - classNames - colspan - css - dataLoader - itemsPerPageDefaultValue - itemsPerPageItems - itemsPerPageUnlimitedItemVisible - itemsPerPageVisible - visible
autoLoad
Атрибут autoLoad определяет, должно ли количество элементов загружаться автоматически. Когда autoLoad отключен, компонент не знает общее количество элементов и отображает кнопку с вопросительным знаком [?]. При включении компонент выполняет запрос для получения общего количества элементов и отображает его. Значение по умолчанию: false.
Обработчики
| Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). | 
AfterRefreshEvent
Событие io.jmix.flowui.component.PaginationComponent.AfterRefreshEvent возникает после обновления данных.
BeforeRefreshEvent
Событие io.jmix.flowui.component.PaginationComponent.BeforeRefreshEvent возникает перед обновлением данных при нажатии пользователем кнопок "вперед", "назад" и т.д. Вы можете предотвратить обновление контейнера данных, вызвав метод preventRefresh(), например:
@Subscribe("simplePagination")
public void onSimplePaginationBeforeRefresh(
        final PaginationComponent.BeforeRefreshEvent<SimplePagination> event) {
    if (Objects.requireNonNull(event.getSource().getPaginationLoader()).size() > 10) (1)
        event.preventRefresh(); (2)
}| 1 | Проверяем количество экземпляров в загрузчике данных. | 
| 2 | Блокируем обновление данных. | 
totalCountDelegate
Устанавливает делегат для получения общего количества элементов. Например:
@Autowired
private DataManager dataManager;
@Install(to = "simplePagination", subject = "totalCountDelegate")
private Integer simplePaginationTotalCountDelegate(final LoadContext<User> loadContext) {
    return dataManager.loadValue("select count(e) from User e", Integer.class).one();
}