I have 2 problem's with devExpress dxSelectBox.
After I pick an item form drop-down list input box becomes editable. It is not on page load and I don't know why.
Can't display a flag icon in main box, but can do it in dropdown list items This is what it looks like this:
Here is a code: javascript:
var langs = [{
'Name': 'English',
"ImageSrc": '/static/img/flags/United-States-icon.png',
'value': 'en'
}, {
'Name': '中文',
"ImageSrc": '/static/img/flags/China-icon.png',
'value': 'zh'
}]
$(function(){
$("#language").dxSelectBox({
dataSource: langs,
displayExpr: "Name",
valueExpr: "value",
value: langs[0].value,
acceptCustomValue: false,
fieldEditEnabled: false,
height: 'auto',
width: '100',
fieldTemplate: function(data, container) {
var result = $("<div class='custom-item'><div class='lang'>" +
"<img src='" + data["ImageSrc"] +
"' /></div></div>");
result.find(".lang").dxTextBox({ value: data['Name'] });
container.append(result);
},
itemTemplate: function(data) {
return "<div class='custom-item'>" + "<div class='lang'>" +
data['Name'] + "<img src='" +
data['ImageSrc']+ "' /></div></div>";
},
valueChangeEvent: function(data) {
window.location.replace('https://www.google.com')
}
});
});
css:
.dx-dropdownlist-popup-wrapper .dx-list:not(.dx-list-select-decorator-enabled) .dx-list-item-content {
padding-left: 7px;
padding-right: 7px;
}
.custom-item {
position: relative;
min-height: 30px;
}
.custom-item .language {
display: inline-block;
padding-left: 10px;
text-indent: 0;
line-height: 30px;
font-size: 12px;
}
/*.custom-item > img {*/
/*left: 1px;*/
/*position: absolute;*/
/*top: 50%;*/
/*!*margin-top: -15px;*!*/
/*}*/
.custom-item .dx-texteditor-buttons-container {
display: none;
}
.current-value {
padding: 10px 0;
}
.current-value > span {
font-weight: bold;
}
The first point:
You are using the
fieldEditEnabled
option that is deprecated. Use only theacceptCustomValue
option instead.The second point:
You're trying to render an image inside the
.lang
element. Next, you create adxTextBox
on the.lang
div. So, all inner markup is replaced with dxTextBox markup. Well, you can just put your image next to the.lang
div:I've created fiddle as well.