simplePagination

simplePagination загружает данные на страницы и предоставляет элементы управления для навигации между ними.

XML-элемент

simplePagination

Java-класс

SimplePagination

Обзор

Простое разбиение на страницы

Основы

simplePagination имеет простой вид с количеством строк и кнопками навигации.

Также может содержать выпадающий список для выбора количества элементов на странице.

По умолчанию Jmix Studio создаёт simplePagination при создании для сущности экрана списка StandardListView.

<data>
    <collection id="customersDc"
                class="io.jmix.uisamples.entity.Customer">
        <fetchPlan extends="_local"/>
        <loader id="customersDl">
            <query>
                <![CDATA[select e from Customer e]]>
            </query>
        </loader>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/>
</facets>
<layout>
    <simplePagination alignSelf="CENTER" itemsPerPageDefaultValue="5"
                      dataLoader="customersDl"/>
    <dataGrid id="customersDataGrid"
              dataContainer="customersDc"
              width="100%"
              minHeight="15em">
        <columns>
            <column property="name"/>
            <column property="lastName"/>
        </columns>
    </dataGrid>
</layout>

Количество элементов на странице

Компонент simplePagination содержит специальный comboBox с вариантами ограничения количества элементов на странице. Для его отображения установите атрибут itemsPerPageVisible в значение true. По умолчанию: false.

Значение этого списка по умолчанию задаётся свойством jmix.ui.component.pagination-items-per-page-items.

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

<data>
    <collection id="customersDc"
                class="io.jmix.uisamples.entity.Customer">
        <fetchPlan extends="_local"/>
        <loader id="customersDl">
            <query>
                <![CDATA[select e from Customer e]]>
            </query>
        </loader>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/>
</facets>
<layout>
    <simplePagination alignSelf="CENTER"
                      itemsPerPageVisible="true"
                      itemsPerPageItems="5, 10, 15"
                      itemsPerPageDefaultValue="5"
                      dataLoader="customersDl"/>
    <dataGrid id="customersDataGrid"
              dataContainer="customersDc"
              width="100%"
              minHeight="15em">
        <columns>
            <column property="name"/>
            <column property="lastName"/>
        </columns>
    </dataGrid>
</layout>

Варианты со значением, меньшим или равным 0, игнорируются. Варианты, превышающие максимально допустимый размер выборки сущности, заменяются на максимальное значение.

Для установки значения по умолчанию используйте атрибут itemsPerPageDefaultValue:

<data>
    <collection id="customersDc"
                class="io.jmix.uisamples.entity.Customer">
        <fetchPlan extends="_local"/>
        <loader id="customersDl">
            <query>
                <![CDATA[select e from Customer e]]>
            </query>
        </loader>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/>
</facets>
<layout>
    <simplePagination alignSelf="CENTER"
                      itemsPerPageVisible="true"
                      itemsPerPageItems="5, 10, 15"
                      itemsPerPageDefaultValue="5"
                      dataLoader="customersDl"/>
    <dataGrid id="customersDataGrid"
              dataContainer="customersDc"
              width="100%"
              minHeight="15em">
        <columns>
            <column property="name"/>
            <column property="lastName"/>
        </columns>
    </dataGrid>
</layout>

Атрибут itemsPerPageUnlimitedItemVisible управляет отображением варианта null в comboBox. По умолчанию: true.

При выборе null-варианта компонент попытается загрузить все данные в пределах ограничения максимально допустимого размера выборки.

Максимально допустимый размер выборки для всех сущностей определяется свойством jmix.ui.default-max-fetch-size (по умолчанию 10000). Для конкретной сущности можно задать отдельное ограничение через jmix.ui.entity-max-fetch-size.

Надпись пустого элемента

Когда itemsPerPageUnlimitedItemVisible="true", в выпадающем списке отображается пустой элемент, который позволяет загрузить все данные (ограниченные максимальным размером выборки). По умолчанию этот элемент отображается как пустая строка.

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

pagination.itemsPerPage.emptySelectionCaption=Show all

Если ключ сообщения pagination.itemsPerPage.emptySelectionCaption присутствует в пакете сообщений, его значение будет отображаться вместо пустого элемента в выпадающем списке. Если ключ не найден, элемент остается пустым.

Предотвращение обновления

BeforeRefreshEvent запускается до того, как соответствующий загрузчик данных загрузит другую страницу. Обработчик может вызвать preventRefresh(), чтобы отменить операцию.

XML
<data>
    <collection id="customersDc"
                class="io.jmix.uisamples.entity.Customer">
        <fetchPlan extends="_local"/>
        <loader id="customersDl">
            <query>
                <![CDATA[select e from Customer e]]>
            </query>
        </loader>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/>
</facets>
<layout>
    <simplePagination id="simplePagination"
                      alignSelf="CENTER"
                      itemsPerPageDefaultValue="5"
                      dataLoader="customersDl"/>
    <dataGrid id="customersDataGrid"
              dataContainer="customersDc"
              width="100%"
              minHeight="15em">
        <columns>
            <column property="name"/>
            <column property="lastName"/>
        </columns>
    </dataGrid>
</layout>
Java
@Autowired
protected Notifications notifications;

@Subscribe("simplePagination")
protected void onSimplePaginationBeforeRefresh(PaginationComponent.BeforeRefreshEvent<SimplePagination> event) {
    notifications.show("Before data refresh");
}

Обработка завершенного обновления

AfterRefreshEvent запускается после того, как компонент успешно обновит данные, при условии, что операция не была предотвращена.

XML
<data>
    <collection id="customersDc"
                class="io.jmix.uisamples.entity.Customer">
        <fetchPlan extends="_local"/>
        <loader id="customersDl">
            <query>
                <![CDATA[select e from Customer e]]>
            </query>
        </loader>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/>
</facets>
<layout>
    <simplePagination id="simplePagination"
                      alignSelf="CENTER"
                      itemsPerPageDefaultValue="5"
                      dataLoader="customersDl"/>
    <dataGrid id="customersDataGrid"
              dataContainer="customersDc"
              width="100%"
              minHeight="15em">
        <columns>
            <column property="name"/>
            <column property="lastName"/>
        </columns>
    </dataGrid>
</layout>
Java
@Autowired
protected Notifications notifications;

@Subscribe("simplePagination")
protected void onSimplePaginationAfterRefresh(PaginationComponent.AfterRefreshEvent<SimplePagination> event) {
    notifications.show("After data refresh");
}

Атрибуты

simplePagination имеет следующие уникальные атрибуты:

Имя Описание По умолчанию

autoLoad

Атрибут autoLoad определяет, должно ли количество элементов загружаться автоматически.

dataLoader

Чтобы создать simplePagination, связанный с данными, используйте атрибут dataLoader.

itemsPerPageDefaultValue

Устанавливает значение по умолчанию для количества элементов на странице. См. Элементов на странице.

itemsPerPageItems

Устанавливает количество элементов на странице. См. Элементов на странице.

itemsPerPageUnlimitedItemVisible

Определяет, включает ли список элементов на странице возможность загрузки всех доступных элементов. См. Элементов на странице.

itemsPerPageVisible

Управляет отображением селектора элементов на странице. См. Элементов на странице.

simplePagination имеет следующие общие атрибуты:

Обработчики

simplePagination имеет следующие уникальные обработчики:

Имя Описание

AfterRefreshEvent

io.jmix.flowui.component.PaginationComponent.AfterRefreshEvent запускается после обновления данных.

BeforeRefreshEvent

io.jmix.flowui.component.PaginationComponent.BeforeRefreshEvent запускается перед обновлением данных, когда пользователь нажимает кнопку «Далее», «Предыдущее» и т. д.

totalCountDelegate

Устанавливает делегат, который используется для получения общего количества элементов.

simplePagination имеет следующие общие обработчики: