Я пытаюсь создать раскрывающийся список с множественным выбором с помощью DevExtreme jQuery. Я просмотрел демонстрации на веб-сайте DevExpress, они используют TreeView или Grid внутри DropDownBox. Адаптируя этот код, вот что я написал:
$('#list1').dxDropDownBox({
showClearButton: true,
valueExpr: 'Value',
displayExpr: 'Text',
dataSource: new DevExpress.data.ArrayStore({
data: source,
key: 'Value'
}),
contentTemplate: function (e) {
var value = e.component.option("Value"),
$list = $("<div>").dxList({
dataSource: e.component.option("dataSource"),
valueExpr: 'Value',
displayExpr: 'Text',
showSelectionControls: true,
selectionMode: "all",
selectedItemKeys: value,
onSelectionChanged: function (e) {
var selectedKeys = e.component.option("selectedItemKeys");
e.component.option("Value", selectedKeys);
}
});
return $list;
},
});
Источником является массив объектов с двумя свойствами (Текст и Значение здесь одинаковы, но иногда они могут быть разными):
[{"Text":"2000","Value":"2000"},{"Text":"2005","Value":"2005"}]
Список отображается так, как должен, но у меня есть две проблемы:
- Когда я выбираю один или несколько элементов в списке, тексты выбранных элементов не отображаются в раскрывающемся списке (в демонстрациях он отображается в виде текста, разделенного запятыми).
- Я поместил элемент list1 в HTML-форму (а не в форму DevExtreme) и не знаю, как опубликовать выбранные значения в форме (или даже получить их в jQuery).