#javascript #dojo #dijit.form
#javascript #dojo #dijit.form
Вопрос:
Я пытаюсь отобразить вертикальную полосу прокрутки в CheckedMultiSelect
(выпадающем) виджете.
Я попытался установить height
/ overflow-y
properties, но по-прежнему безуспешно.
Я включил оба свойства для виджета, т.е. multiple =»true» и dropdown =»true».
Я показываю около 200 элементов, и список выходит за пределы нижней части элемента управления.
Смотрите мой пример кода ниже :
<select multiple="true"
dropdown="true"
name="multiselect"
data-dojo-type="dojox/form/CheckedMultiSelect">
<option value="TN">Tennessee</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="FL">Florida</option>
<option value="CA">California</option>
<option value="TN1">Tennessee</option>
<option value="VA1">Virginia</option>
<option value="WA1">Washington</option>
<option value="FL1">Florida</option>
<option value="CA1">California</option>
<option value="TN1">Tennessee</option>
<option value="TN2">Tennessee</option>
<option value="VA2">Virginia</option>
<option value="WA2">Washington</option>
<option value="FL2">Florida</option>
<option value="CA2">California</option>
<option value="TN2">Tennessee</option>
<option value="TN3">Tennessee</option>
<option value="VA3">Virginia</option>
<option value="WA3">Washington</option>
<option value="FL3">Florida</option>
<option value="CA3">California</option>
<option value="TN3">Tennessee</option>
</select>
Версия DOJO 1.14.
Любая помощь будет признательна,
-Прашант
Ответ №1:
Вы можете переопределить некоторый стиль css для достижения желаемого результата , изменив height
overflow
свойства и отображаемый элемент меню как поток
.dojoxCheckedMultiSelect .dijitMenuTable {
/* fix some rendering issue menu item width table*/
width: 100%;
}
.dojoxCheckedMultiSelectMenu {
/* set scroll-x to scroll and hide y scroll bare*/
overflow: hidden scroll !important;
/* set max height for dropdown menu */
max-height: 150px !important;
}
Вы можете проверить рабочий фрагмент здесь :
require(["dojo/ready", "dojox/form/CheckedMultiSelect"], function(ready, CheckedMultiSelect) {
ready(function() {
console.log("Hi");
})
});
html,
body {
width: 100%;
height: 100%;
margin: 0px;
}
.dojoxCheckedMultiSelect .dijitMenuTable {
/* fix some rendering issue menu item width table*/
width: 100%;
}
#one_menu.dojoxCheckedMultiSelectMenu {
/* set scroll-x to scroll and hide y scroll bare*/
overflow: hidden scroll !important;
/* set max height for dropdown menu */
max-height: 150px !important;
}
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet" />
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojox/form/resources/CheckedMultiSelect.css" rel="stylesheet" />
<script>
dojoConfig = {
parseOnLoad: true,
async: true
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js"></script>
<body class="claro">
<select id="one" multiple="true" dropdown="true" name="multiselect" data-dojo-type="dojox/form/CheckedMultiSelect">
<option value="TN">Tennessee</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="FL">Florida</option>
<option value="CA">California</option>
<option value="TN1">Tennessee</option>
<option value="VA1">Virginia</option>
<option value="WA1">Washington</option>
<option value="FL1">Florida</option>
<option value="CA1">California</option>
<option value="TN1">Tennessee</option>
<option value="TN2">Tennessee</option>
<option value="VA2">Virginia</option>
<option value="WA2">Washington</option>
<option value="FL2">Florida</option>
<option value="CA2">California</option>
<option value="TN2">Tennessee</option>
<option value="TN3">Tennessee</option>
<option value="VA3">Virginia</option>
<option value="WA3">Washington</option>
<option value="FL3">Florida</option>
<option value="CA3">California</option>
<option value="TN3">Tennessee</option>
</select>
<select id="two" multiple="true" dropdown="true" name="multiselect" data-dojo-type="dojox/form/CheckedMultiSelect">
<option value="TN">Tennessee</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="VA1">Virginia</option>
<option value="WA1">Washington</option>
<option value="FL1">Florida</option>
<option value="CA1">California</option>
<option value="TN1">Tennessee</option>
<option value="TN2">Tennessee</option>
<option value="VA2">Virginia</option>
<option value="WA2">Washington</option>
<option value="FL2">Florida</option>
<option value="CA2">California</option>
<option value="TN2">Tennessee</option>
<option value="TN3">Tennessee</option>
<option value="VA3">Virginia</option>
<option value="WA3">Washington</option>
<option value="FL3">Florida</option>
<option value="CA3">California</option>
<option value="TN3">Tennessee</option>
</select>
</body>
Комментарии:
1. Спасибо @Sadhil, все работает нормально!!! один дополнительный вопрос — это относится ко всем виджетам проверки множественного выбора. Есть идеи, как применить это изменение только к определенному виджету? Я пытался добавить #selectId перед css, но не работает.
2. @prashant это просто, укажите идентификатор по примеру
#myid
для вашего выбора, а затем в css, просто укажите#widget_myid.dojoxCheckedMultiSelectMenu { ... }
, чтобы применить стиль только к этому ,3. также, если вы хотите использовать muliple, просто поместите селектор класса и примените стиль прокрутки к этому классу
4. Спасибо, Садхил, очень ценю вашу помощь