Я пытаюсь изменить цвет интерфейса Kendo UI ComboBox в зависимости от выбранного элемента.Kendo UI ComboBox События
Я соединил скрипку, показывая проблему [http://jsfiddle.net/PeWPE/]
Что мне нужно сделать, это определить выбранный элемент при загрузке страницы. Я могу захватить событие onDataBound, но не могу найти выбранный элемент в этой точке - я подозреваю, что он недоступен.
Когда пользователь выбирает новый элемент из списка избранного событие дает мне все данные мне нужно изменить цвет ComboBox, хотя цвет не меняется фактически :(
Таким образом, в резюме, есть ли способ изменить цвет кендо UI ComboBox, когда исходное значение (и любая помощь с закреплением моего синтаксиса будет хорошо!).
Спасибо за вашу помощь.
Вот код ...
$(document).ready(function() {
// Create some data - including a color
var data = [{
text: "12 Angry Men",
value: "1",
color: "White"
}, {
text: "Il buono, il brutto, il cattivo.",
value: "2",
color: "White"
}, {
text: "Inception",
value: "3",
color: "Green"
}, {
text: "One Flew Over the Cuckoo's Nest",
value: "4",
color: "Green"
}, {
text: "Pulp Fiction",
value: "5",
color: "Blue"
}, {
text: "Schindler's List",
value: "6",
color: "Blue"
}, {
text: "The Dark Knight",
value: "7",
color: "Red"
}, {
text: "The Godfather",
value: "8",
color: "Red"
}, {
text: "The Godfather: Part II",
value: "9",
color: "Yellow"
}, {
text: "The Shawshank Redemption",
value: "10",
color: "Yellow"
}, {
text: "The Shawshank Redemption 2",
value: "11",
color: "Orange"
}];
// Create the combo
$("#movies").kendoComboBox({
dataTextField: "text",
dataValueField: "value",
dataSource: data,
height: 100,
change: onChange,
dataBound: onDataBound,
select: onSelect
});
// Select a value - Note no event is raised when doing this(!)
var combo = $("#movies").data("kendoComboBox");
combo.value("9");
function onChange(e) {
alert('onChange Called');
ctrl = this.element.attr("id");
var dataItem = this.dataItem(e.item.index());
}
// This is called - but the color is not being set
function onSelect(e) {
alert('onSelect Called');
var ctrl = this.element.attr("id");
var dataItem = this.dataItem(e.item.index());
alert('Control Id: ' +ctrl); // Check we've got the control
alert('Color selected: ' + dataItem.color);
$('input[name="' + ctrl + '_input"]').css({
backgroundColor: dataItem.color
});
$('#movies').css({
backgroundColor: dataItem.color
});
}
function onDataBound(e) {
alert('onDataBound Called');
}
})
Спасибо за помощь @OnaBai. К сожалению, я не могу установить начальное значение в разметке kendoComboBox(), оно задается нокаутом, а во время привязки нет этого значения для использования. Любые идеи, как я могу установить цвет в этих обстоятельствах во время привязки? – user2208192
Проверьте эту измененную версию: http://jsfiddle.net/OnaBai/PeWPE/8/. Где я вызываю 'trigger (" select ");' после установки значения. Это немного низкий уровень, но вызывает то, что KendoUI не вызывает, когда мы делаем 'value (9)'. Вы можете понять, что я удалил любую ссылку на 'e' на' onSelect', так как я не передаю ее как аргумент 'trigger'. Если вам это нужно, вам нужно создать совместимую версию 'e' и передать ее в' trigger'.Я также удалил 'onDataBound', поскольку он не нужен, если вы не устанавливаете начальное значение. – OnaBai
Спасибо за помощь, похоже, в документах Kendo довольно много! – user2208192