multiSelectComboBoxPicker

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

XML-элемент

multiSelectComboBoxPicker

Java-класс

JmixMultiSelectComboBoxPicker

Основы

Выпадающий список открывается при нажатии на поле указателем. Если поле находится в фокусе, список также открывается клавишами Up и Down или при вводе символа.

Для multiSelectComboBoxPicker можно определить произвольное количество действий, отображаемых в виде кнопок справа. Это можно сделать либо в XML-дескрипторе, используя вложенный элемент actions, либо программно в контроллере, используя метод addAction().

<multiSelectComboBoxPicker placeholder="Choose a customers" itemsContainer="customersDc"
                           metaClass="Customer"
                           width="20em">
    <actions>
        <action id="entity_lookup" type="entity_lookup"/>
        <action id="entity_clear" type="entity_clear"/>
    </actions>
</multiSelectComboBoxPicker>

multiSelectComboBoxPicker связанный с данными

Привязка данных - это процесс связывания визуального компонента с контейнером данных. Изменения в визуальном компоненте или в соответствующем контейнере данных могут вызывать обновления друг в друге. Подробности смотрите в разделе Использование компонентов данных.

Как и multiSelectComboBox, компонент multiSelectComboBoxPicker предназначен для свойств, хранящих несколько значений, например List или Set. Обычные структуры данных и сценарии использования смотрите в разделе Привязка данных.

Чтобы создать multiSelectComboBoxPicker, подключенный к данным, используйте атрибуты dataContainer и property. Атрибут itemsContainer используется для предоставления списка доступных элементов. Следующий пример создаёт компонент multiSelectComboBoxPicker, работающий с данными.

<data>
    <instance id="userDc" class="com.company.onboarding.entity.User"> (1)
        <fetchPlan extends="_base"> (2)
            <property name="hobbies" fetchPlan="_base"/>
        </fetchPlan>
        <loader id="userDl"/>
    </instance>
    <collection id="hobbiesDc" class="com.company.onboarding.entity.Hobby"> (3)
        <loader id="hobbiesDl" readOnly="true">
            <query>
                <![CDATA[select e from Hobby e]]>
            </query>
        </loader>
        <fetchPlan extends="_base"/>
    </collection>
</data>
<facets>
    <dataLoadCoordinator auto="true"/> (4)
</facets>
<layout>
    <multiSelectComboBoxPicker id="hobbiesPicker"
                               dataContainer="userDc"
                               property="hobbies"
                               itemsContainer="hobbiesDc"> (5)
        <actions>
            <action id="entityClear" type="entity_clear"/> (6)
            <action id="entityLookup" type="entity_lookup"/> (7)
        </actions>
    </multiSelectComboBoxPicker>
</layout>
1 Контейнер данных для хранения экземпляра User, который в данный момент редактируется.
2 Фетч-план расширен для извлечения коллекции экземпляров Hobby, которые будут доступны для выбора.
3 CollectionContainer для сущности Hobby.
4 Координатор загрузки данных для автоматического предоставления компоненту экземпляров для выбора.
5 multiSelectComboBoxPicker получает hobbiesDc в качестве контейнера элементов, чтобы отобразить список хобби в выпадающем списке.
6 Добавление предопределённого действия для очистки выбора.
7 Добавление предопределённого действия для открытия экрана поиска.

Значение компонента содержит выбранные элементы. Когда компонент привязан к свойству-коллекции, Jmix преобразует выбранные элементы к типу коллекции свойства, например, List или Set.

Использование MetaClass

Вы можете использовать multiSelectComboBoxPicker без прямой ссылки на данные, то есть вам не нужно указывать атрибуты dataContainer или property. В этом случае используйте атрибут metaClass, чтобы указать тип сущности для multiSelectComboBoxPicker. Чтобы указать коллекцию экземпляров для выбора, используйте атрибут itemsContainer.

Например, компонент может работать с сущностью Hobby, которая имеет имя класса метаданных Hobby.

<multiSelectComboBoxPicker placeholder="Choose a customers" itemsContainer="customersDc"
                           metaClass="Customer"
                           width="20em">
    <actions>
        <action id="entity_lookup" type="entity_lookup"/>
        <action id="entity_clear" type="entity_clear"/>
    </actions>
</multiSelectComboBoxPicker>

Валидация

Чтобы проверить значения, введённые в компонент multiSelectComboBoxPicker, вы можете использовать валидатор во вложенном элементе validators.

Для multiSelectComboBoxPicker доступны следующие предопределённые валидаторы:

XML-элемент

validators

Предопределённые валидаторы

custom - notEmpty - notNull - size

Варианты темы

Используйте атрибут themeNames, чтобы применить один или несколько вариантов темы.

Вариант Описание Поддерживается в

align-left

Выравнивает значение поля по левому краю.

Aura, Lumo

align-center

Выравнивает значение поля по центру.

Aura, Lumo

align-right

Выравнивает значение поля по правому краю.

Aura, Lumo

align-start

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

Aura

align-end

Выравнивает значение поля по конечной стороне с учетом текущего направления текста.

Aura

helper-above-field

Размещает вспомогательный текст над полем, под меткой.

Aura, Lumo

small

Уменьшает размер компонента.

Aura, Lumo

Атрибуты

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

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

allowCustomValue

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

autoExpand

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

autoOpen

Определяет, открывается ли всплывающий список элементов при получении полем фокуса.

clearButtonVisible

Определяет, отображается ли в поле кнопка очистки.

false

itemsContainer

Задаёт контейнер элементов.

itemsEnum

Задаёт перечисление элементов.

metaClass

Задаёт метакласс.

opened

Определяет, открыто ли наложение элемента.

pageSize

Задаёт размер страницы.

selectedItemsOnTop

Устанавливает выбранные элементы сверху.

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

Обработчики

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

Имя Описание

CustomValueSetEvent

Возникает, когда пользователь вводит в поле пользовательское значение.

itemLabelGenerator

Предоставляет текст, отображаемый для каждого элемента.

itemsFetchCallback

Загружает элементы по запросу фильтрации и параметрам постраничного вывода.

renderer

Предоставляет компонент для отображения каждого элемента.

validator

Проверяет значение компонента.

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

Элементы

Компонент multiSelectComboBoxPicker может содержать следующие вложенные элементы: actions, fragmentRenderer, itemsQuery, tooltip, и validators.