PageableLookup#
PageableLookup - элемент управления, позволяющий выбирать значения из постраничных справочников.
Свойства#
id#
Идентификатор контрола.
Отнаследовано от Control
hint#
Всплывающая подсказка, которая появляется при наведении на контрол.
отнаследовано от Control
tags#
Позволяет объединять контролы в группы, возвращает массив имен.
Отнаследовано от Control
denyRoles#
Список ролей без прав на данный элемент.
Отнаследовано от Control
readRoles#
Список ролей на чтение данных.
Отнаследовано от Control
writeRoles#
Список ролей на изменение данных.
Отнаследовано от Control
bind#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | - |
Свойство, к которому биндится контрол
value#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | - |
Задает значение контрола
captionWidth#
Ширина заголовка в колонках (для Bootstrap-верстки).
Отнаследовано от Control
editorWidth#
Ширина контрола в колонках (для Bootstrap-верстки).
отнаследовано от Control
captionTextAlign#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | left | left, right |
Выравнивание текста заголовка контрола (доступно с версии 3.26.0)
visible#
Видимость контрола.
Отнаследовано от Control
width#
Ширина контрола.
Отнаследовано от Control
caption#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | - |
Заголовок контрола
bindingMode#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | object | object, multiple |
Режим биндинга
popupWindowType#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | simple |
Тип окна выпадающего списка. Доступно только одно значение: simple
viewMode#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | standard | standard, extended |
Режим отображения контрола.
Описание смотри у контрола Lookup
valueMember#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | VCode |
Имя свойства, являющегося кодом объекта
displayMember#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | Name |
Имя свойства, являющегося наименованием объекта
enabled#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | true | true/false |
Доступность контрола для редактирования
newDocButtonVisibility#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | true | true/false |
Видимость кнопки создания нового документа (для управления видимостью необходимо задать свойство formDefiner)
codeBoxWidth#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| number | 50 |
Ширина поля с кодом
showValueMember#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | true | true/false |
Отображение поля с кодом
showDisplayMember#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | true | true/false |
Отображение поля с наименованием
valueMemberColumnText#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | Код |
Заголовок колонки с кодом
valueMemberColumnWidth#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| int | - |
Ширина колонки с кодом.
Если не задано, то вычисляется автоматически
displayMemberColumnWidth#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| int | - |
Ширина колонки с наименованием.
Если не задано, то вычисляется автоматически
valueMemberColumnText#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | Наименование |
Заголовок колонки с наименованием
filterCondition#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | contains | contains, starts_with, equal |
Тип фильтрации
readOnly#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | false | true/false |
Режим "только для чтения"
rowsCount#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| int | 9 |
Количество отображаемых строк
topCount#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| int | 100 |
Количество выводимых значений в списке.
dataSource#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | - |
Источник данных грида
topCount#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| int | 100 |
Количество записей при постраничном выводе данных
boundaryKeyName#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| string | VCode |
Имя поля данных, возвращаемых запросом, по которому данные делятся на страницы.
Если свойство не указано, то берется valueMember
clearButtonVisible#
| тип | значение по умолчанию | допустимые значения |
|---|---|---|
| bool | true | true/false |
Видимость кнопки очистки значения.
События#
valueChanged#
Возникает при смене значения
Коллбэки#
validator#
gridCellPainter#
Частичная загрузка и серверная фильтрация#
На модели:#
Постраничный лукап на модели поддерживает встроенный механизм серверной фильтрации.
На запросе:#
Для использования встроенных механизмов частичной загрузки и серверной фильтрации необходимо:
- Установить у лукапа свойство topCount
- Запрос, поддерживающий параметры для частичной загрузки, установки по коду и серверной фильтрации
Обязательные параметры, которые должны быть описаны в запросе:
TopCount- количество записей, загружаемый при частичной загрузке.PrimaryKeyBoundary- значение первичного ключа, с которого начинается/продолжается считывание указанное количество записей(TopCount).filter- значение, введеное в лукап для фильтрации записей.UniqueId- значение, введенное в поле valueMember для установки значения в лукап по коду.
Сам запрос должен быть приведен к следующему виду:
Пример
Выражения
Пример
обеспечивают частичную загрузку данных, где [valueMember] - это имя поля колонки таблицы, указанное в лукапе в качестве свойства valueMember.
Условие
Пример
обеспечивает серверную фильтрацию, где [valueMember] - это имя поля колонки таблицы, указанное в лукапе в качестве свойства valueMember, а [Поле1], [Поле2] - поля грида лукапа. В это условие для каждой колонки грида лукапа, по которой ведется поиск, дописывается выражение вида
Пример
Пример запроса:
Пример
Сортировка#
В постраничном лукапе на запросе можно реализовать постраничный вывод и фильтрацию с учетом сортировки.
Пример реализации.
Напишем запрос, который возвращает имена контрагентов отсортированными в зависимости от указанного фильтра в следующем порядке:
- Cначала выводятся записи, наименования контрагента в которых начинается со значения, равного введенному значению фильтра,
- Далее выводятся записи, в наименовании контрагента которых встречается значение, равное введенному значению фильтра.
Обязательные параметры, которые должны быть описаны в запросе:
TopCount- количество записей, загружаемый при частичной загрузке.PrimaryKeyBoundary- значение ключа, с которого начинается/продолжается считывание указанное количество записей(TopCount). Название параметра не изменилось для обратной совместимости.filter- значение, введеное в лукап для фильтрации записей.UniqueId- значение, введенное в поле valueMember для установки значения в лукап по коду.
Запрос имеет следующий вид:
Пример
В этом запросе подселект выводит все данные с учетом сортировки по значению фильтра, при этом порядковый номер строк записывается в поле OrderKey. Внешний селект выводит данные постранично по полю OrderKey.
В дизайнере постраничный лукап настраивается как обычно, добавляется свойство data-lx-boundaryKeyName со значением поля, по которому ведется постраничный вывод, в данном примере OrderKey.
Поведение#
Серверная фильтрация#
- Значение, введённое в поле наименования, будет использовано для фильтрации источника данных через 1 секунду после окончания ввода. Если в течение этой секунды ввод текста повторяется, то отложенная предыдущая фильтрация будет отменена
- Введённое значение используется для фильтрации источника данных по всем видимым колонкам, представленным в лукапе
Постраничная загрузка#
- При получении фокуса лукапом выполнятеся проверка необходимости загрузки данных. Если загрузка данных уже осуществлялась, коллекция объектов выпадающего списка не грузится. В ином случае происходит загрузка первой порции объектов
- В нижней части окна выпадающего списка располагается кнопка с надписью "Загрузить ещё N" (где N - значение свойства topCount лукапа). При нажатии на эту кнопку производится загрузка следующей порции объектов
- Если нажатие на кнопку "Загрузить ещё N" происходит при наличии применённого серверного фильтра, загрузка следующей порции объектов выполнится с учётом текущего фильтра
- После окончания загрузки части коллекции среди значений ключевых свойств загруженных объектов (имя ключевого свойства указывается в свойстве valueMember лукапа) ищется максимальное значение, которое будет использовано при загрузке следующей порции объектов в качестве нижней границы обрабатываемого диапазона значений кодов загружаемых объектов
- Если при загрузке очередной порции данных обнаруживается, что количество загруженных объектов меньше значения свойства topCount, кнопка "Загрузить ещё" скрывается
Сброс серверного фильтра и постраничных параметров#
Сброс серверного фильтра и постраничных параметров вызывается следующими действиями:
- Выбор значения в лукапе
- Переход фокуса на другой элемент управления
Загрузка объекта по коду#
- При загрузке объекта по коду (вызванной введением кода искомого объекта в поле ввода кода) происходит загрузка источника данных с со следующими постраничными параметрами: количество ожидаемых объектов равно единице, нижняя граница обрабатываемого диапазона значений кодов объекта равна коду загружамеого объекта. Если возвращается объект с иным кодом, значит, объект с искомым кодом не существует
Использование обозревателя аналитик#
Для того, чтобы в лукапе появилась возможность выбирать объекты из обозревателя аналитик, необходимо:
- Создать форму обозревателя аналитик (читай статью UniAnalyt)
- Выполнить требования из статьи UniAnalyt в разделе "использование в лукапе".
- Вложить в постраничный лукап контрол UniAnalytWindow
- Установить значение свойства boundaryKeyName = OrderKey
- Использовать в качестве источника данных (свойство dataSource) специальный запрос, который описан ниже в этом разделе
Пример
Доступ к экземпляру UniAnalytWindow осуществляется следующим образом:
Запрос для загрузки данных#
Параметры, которые должны быть описаны в запросе:
TopCount- количество записей, загружаемый при частичной загрузке.PrimaryKeyBoundary- значение ключа, с которого начинается/продолжается считывание указанное количество записей(TopCount). Название параметра не изменилось для обратной совместимости.filter- значение, введеное в лукап для фильтрации записей.UniqueId- значение, введенное в поле valueMember для установки значения в лукап по коду.topNode- задает стартовую вершину дерева. Параметр берется из настроек контрола UniAnalytWindowanalyticsType- задает фильтр по типу аналитики. Параметр берется из настроек контрола UniAnalytWindow
Описание запроса:
Текст запроса:
Примечание: имя таблицы обозревателя аналитик (в примере используется UniAnalyt) и настроечной таблицы (в примере используется UniAnalytSettings) может отличаться на вашем проекте. В этом случае в запросе нужно заменить имена таблиц на те, которое используются у вас.