Перейти к основному содержимому

Комбо

Выпадающий список, представленный компонентом DHTMLX Combo component.

combo_editor

const holders = [
{ key: 1, label: 'James' },
{ key: 2, label: 'Alex' },
{ key: 3, label: 'Antony' },
{ key: 4, label: 'Andrew' }
];

scheduler.locale.labels.section_holder = "Holder";

scheduler.config.lightbox.sections = [
{ name:"description", height:50, map_to:"text", type:"textarea", focus:true },
{ name:"holders", options:holders, map_to:"holders", type:"combo",
image_path:"../common/dhtmlxCombo/imgs/", height:30, filtering:true},
{ name:"time", height:72, type:"time", map_to:"auto"}
];

Combo box in the lightbox

Инициализация

Чтобы добавить элемент управления Combo в lightbox, выполните следующие шаги:

  1. Включите файлы dhtmlxCombo:
<script src="../codebase/dhtmlxscheduler.js" ...></script>
<link rel="stylesheet" href="../codebase/dhtmlxscheduler.css" ...>

<link rel="stylesheet" href="common/dhtmlxCombo/dhtmlxcombo.css" ..>
<script src="common/dhtmlxCombo/dhtmlxcombo.js" ...></script>
  1. Активируйте расширение editors на странице:
scheduler.plugins({
editors: true
});
  1. Добавьте секцию в конфигурацию lightbox:
scheduler.config.lightbox.sections = [
{ name:"description", ... },
{ name:"holders", options:holders, map_to:"holders", type:"combo",
image_path:"../common/dhtmlxCombo/imgs/", height:30, filtering:true},
{ name:"time", ...}
];
  1. Установите метку для раздела:
scheduler.locale.labels.section_holders = "Holder";

Combo box in the lightbox

Свойства

Следующие свойства наиболее важны и обычно настраиваются для элемента управления 'combo' (полный список смотрите здесь):

Заполнение элемента управления данными

В целом, чтобы задать значения для элемента управления Combo, следует использовать параметр options:

scheduler.config.lightbox.sections = 
{
name:"holders", type:"combo",
...
options:[
{ key: 1, label: 'James' },
{ key: 2, label: 'Alex' },
{ key: 3, label: 'Antony' },
{ key: 4, label: 'Andrew' }
]},
...
];

Элементы в параметре options должны иметь 2 обязательных свойства:

  • key - идентификатор варианта
  • label - подпись варианта

Заполнение элемента управления данными с сервера

Чтобы заполнить элемент управления Combo данными с сервера, используйте свойство script_path, указывая путь к серверному скрипту, который будет обрабатывать запросы к серверу.

scheduler.config.lightbox.sections = [
{ name: "country", type: "combo", script_path: "data/combo_select", ... },
...
];

Свойство script_path задаёт URL, с которого Combo будет загружать свои варианты, то есть если script_path указан - Combo попытается загрузить данные по этому URL через AJAX.

Селектор Combo основан на dhtmlxCombo, поэтому сервер должен возвращать данные, совместимые с ним. Подробнее о способах добавления данных в Combo читайте в статье Loading Options.

URL запрашивается в двух случаях:

  1. когда lightbox открывается и у Combo есть выбранное значение - управление отправляет запрос на сервер и загружает метку для выбранного варианта.

Запрос будет иметь параметр запроса id:

GET /url?id="1"

Ответ должен вернуть массив, содержащий только элемент с указанным id в следующем формате:

[
{ "value": 1, "text": "Marketing"}
]
  1. когда пользователь начинает вводить текст в поле ввода списка - управление загружает отфильтрованные значения.

Клиент отправит запрос с введённым текстом в параметре запроса mask:

GET /url?mask="al"

Ответ сервера должен вернуть все элементы, которые соответствуют значению mask:

[
{ "value": 1, "text": "Albania"},
{ "value": 3, "text": "Algeria"},
]

Пример обработчика на стороне сервера (Node.js/Express):

app.get("/api/countries", async (req, res) => {
const { id, mask } = req.query;
// Query your data source by id or mask
const items = await countriesService.find({ id, mask });
res.json(items); // [{ value: 1, text: "Albania" }, ...]
});

Заполнение выпадающего списка данными с сервера

Режим автофильтрации

Режим авто-фильтрации — режим, когда опции автоматически фильтруются по мере ввода пользователя. Чтобы включить режим, установите свойство filtering в значение true:

scheduler.config.lightbox.sections = [
{ name:"holders", type:"combo", filtering:true, ... },
...
];
примечание

Примечание: можно использовать режим автофильтрации независимо от источника данных (клиентский или серверный).

Подробнее по теме в документации dhtmlxCombo dhtmlxCombo. Filtering.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.