multiSelectListBox 多选列表

multiSelectListBox 支持用户通过复选框在一个可滚动的列表中选择多个数据。

XML 元素

multiSelectListBox

Java 类

JmixMultiSelectListBox

XML 属性

id - alignSelf - ariaLabel - ariaLabelledBy - classNames - colspan - css - enabled - height - itemsContainer - itemsEnum - maxHeight - maxWidth - minHeight - minWidth - readOnly - visible - width

事件和处理器

AttachEvent - ComponentValueChangeEvent - itemEnabledProvider - itemLabelGenerator - renderer

XML 内部元素

fragmentRenderer - tooltip

基本用法

使用 itemsContaineritemsEnum 创建选项列表:

<data>
    <collection class="com.company.onboarding.entity.Hobby" id="hobbiesDc"> (1)
        <fetchPlan extends="_base"/>
        <loader id="hobbiesDl">
            <query>
                <![CDATA[select e from Hobby e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <multiSelectListBox itemsContainer="hobbiesDc"/> (2)
</layout>
1 Hobby 实体的 CollectionContainer 容器。
2 multiSelectListBox 使用 hobbiesDc 作为选项容器,列表中显示 hobby 选项。
multi select list box basics

选项状态 Provider

itemEnabledProvider 支持按特定条件动态控制单个选项是否启用。禁用的选项显示灰色,无法被用户选中。所有选项默认启用。

@Install(to = "multiSelectListBox", subject = "itemEnabledProvider")
private boolean multiSelectListBoxItemEnabledProvider(final User user) {
    if (user != null) {
        return user.getActive();
    }
    return true;
}

自定义选项标签

itemLabelGenerator 支持自定义选项在 multiSelectListBox 组件中的显示标签。可以控制用户看到的文本,能以更友好的方式或上下文更相关的方式展示选项。

@Install(to = "multiSelectListBox", subject = "itemLabelGenerator")
private String multiSelectListBoxItemLabelGenerator(final User item) {
    return metadataTools.format(item.getDisplayName()).toUpperCase();
}

选项渲染

可以自定义选项的渲染方式。渲染器在每个选项应用,返回一个表示该选项的组件。

可以使用 setRenderer() 方法或 @Supply 注解实现。

@Supply(to = "mSelectListBox", subject = "renderer")
private ComponentRenderer<Span, User> mSelectListBoxRenderer() {
    return new ComponentRenderer<>(user -> {
        Span span = uiComponents.create(Span.class);
        span.setText(user.getDisplayName());
        span.setClassName("font-bold");
        return span;
    });
}

或者,还可以使用嵌套的 fragmentRenderer 元素来渲染选项。更多信息请参考 Fragment 渲染器 部分。

事件和处理器

通用事件和处理器 对所有组件都是一样的配置。 下面是 multiSelectListBox 的特殊处理方法:

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

名称

描述

itemEnabledProvider

itemEnabledProvider 应用于 multiSelectListBox 的每个选项,确定选项启用(true)还是禁用(false)。参阅 选项状态 Provider

itemLabelGenerator

支持自定义 multiSelectListBox 中每个选项显示的标签。参阅 自定义选项标签

renderer

multiSelectListBox 设置选项渲染器。参阅 选项渲染

参考