J'essaie de changer la couleur d'une ComboBox Kendo UI en fonction de l'élément sélectionné.Kendo UI ComboBox Événements
J'ai mis en place un violon montrant le problème [http://jsfiddle.net/PeWPE/]
Ce que je dois faire est de déterminer l'élément sélectionné lorsque la page se charge. Je peux piéger l'événement onDataBound, mais je ne trouve pas l'élément sélectionné à ce stade - je suppose qu'il n'est pas disponible.
Lorsque l'utilisateur sélectionne un nouvel élément dans la liste l'événement select me donne toutes les données que je dois changer la couleur de la zone de liste déroulante, bien que la couleur ne change pas :(
réellement Ainsi, résumé, est-il possible de changer la couleur d'un ComboBox kendo ui lorsque la valeur initiale est définie (et toute aide à fixer ma syntaxe serait bon aussi!).
Merci pour votre aide.
Voici le code ...
$(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');
}
})
Merci pour l'aide @OnaBai. Malheureusement, je ne peux pas définir la valeur initiale dans le balisage kendoComboBox(), il est défini par knockout, et au moment de la liaison il n'y a pas cette valeur à utiliser. Des idées comment je peux définir la couleur dans ces circonstances au moment de lier? – user2208192
Vérifiez cette version modifiée: http://jsfiddle.net/OnaBai/PeWPE/8/. Où j'appelle 'trigger (" select ");' après avoir défini la valeur. C'est un niveau un peu bas mais qui appelle ce que KendoUI n'invoque pas quand on fait 'value (9)'. Vous pourriez réaliser que j'ai enlevé toute référence à 'e' sur' onSelect' puisque je ne le passe pas comme argument à 'trigger'. Si vous en avez besoin, vous devez générer une version compatible de 'e' et la passer à' trigger'.J'ai également supprimé 'onDataBound' car il n'est pas nécessaire si vous ne définissez pas une valeur initiale. – OnaBai
Merci pour l'aide, il semble y avoir beaucoup pas dans les docs Kendo! – user2208192