simplePagination 简单分页器

simplePagination 可以为页面加载数据并提供浏览数据的控件。

XML 元素

simplePagination

Java 类

SimplePagination

概览

Simple pagination

基本用法

simplePagination 的外观很简单,包含行数和导航按钮。

也可以带包含每页条数的 下拉列表。

Jmix Studio 在为实体创建 StandardListView 时,默认生成 simplePagination。

<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)选项。默认值为 true。

当在 comboBox 中选择 null 选项时,组件会尝试在当前最大加载数的限制下加载所有数据。

所有实体的最大加载数是通过 jmix.ui.default-max-fetch-size UI 属性定义。默认值为 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");
}

XML 属性

下面是 simplePagination 的特殊属性:

名称 描述 默认值

autoLoad

是否自动加载数据的数量。

—

dataLoader

将 simplePagination 与 dataLoader 关联。

—

itemsPerPageDefaultValue

设置每页数量的默认值。参考 每页数量。

—

itemsPerPageItems

设置每页显示数量中的配置。参考 每页数量。

—

itemsPerPageUnlimitedItemVisible

每页数量列表中是否显示一个加载全部数据的选项。参考 每页数量。

—

itemsPerPageVisible

是否显示每页数量的选择器。参考 每页数量。

—

The following shared attributes are supported by simplePagination:

事件和处理器

下面是 simplePagination 的特殊事件和处理器:

名称 描述

AfterRefreshEvent

io.jmix.flowui.component.PaginationComponent.AfterRefreshEvent 当数据刷新后触发。

BeforeRefreshEvent

io.jmix.flowui.component.PaginationComponent.BeforeRefreshEvent 在用户点击下一页、前一页但数据还未刷新时触发。

totalCountDelegate

设置获取数据总数量的委托。

下面是 simplePagination 支持的其他通用事件: