так что, надеюсь, этот пример поможет вам.
Не зная, как вы связываете источник данных со списком, я предполагаю, что он связывается как dataSource
объект.
Я изменил некоторый код, который использовал для аналогичной ситуации.
Вы можете увидеть этот код в прикрепленном додзё: https://dojo.telerik.com/UbARicoy
Итак, все, что я сделал, - назначил два события в выпадающий список:
dataBound
и change
событие. Вот выделенный код:
dataBound: function(e) {
$('#customers_listbox li').removeClass('k-state-disabled');
var ds = this.dataSource
ds.data().forEach(function(option) {
if (ds.view().indexOf(option) % 2) {
$('#customers_listbox li[data-offset-index="' +
ds.view().indexOf(option) + '"]').addClass('k-state-disabled');
}
});
}
Итак, все, что я здесь делаю, это удаляю любые потенциально отключенные элементы до привязки источника данных, а затем перебираю источник данных и затем отключаю каждый альтернативный элемент в текущем view
элементов в источнике данных.
Применение класса k-state-disabled позволяет отключить выбор элемента из списка, щелкнув по нему.
Затем, когда вы выбираете элемент для изменения, затем запускается событие change
:
change: function(e) {
var selectedItem = this.dataItem();
$('#customers_listbox li').removeClass('k-state-disabled');
var ds = this.dataSource;
ds.data().forEach(function(option) {
var randomMod = Math.floor(Math.random() * 4);
if ((ds.view().indexOf(option) - 1) % randomMod && option.CustomerID !== selectedItem.CustomerID) {
$('#customers_listbox li[data-offset-index="' + ds.view().indexOf(option) + '"]').addClass('k-state-disabled');
}
})
}
Итак, здесь я снова удаляю класс отключенных элементов, затем генерирую случайное число для затем отключенного случайные элементы в представлении списка, кроме выбранного элемента, и убедитесь, что это не будет зафиксировано функцией отключения.