Отключение раскрывающихся списков KendoUI

Как отключить опцию выпадающего списка кендою?
Я не мог найти, как это сделать в своей документации...

Ответ 1

Попробуйте следующий подход (здесь и здесь есть некоторые демонстрации): используйте template для ваших элементов, что условно добавляет класс к элементам, которые необходимо отключить. Информация о том, какие элементы должны быть отключены, поступает из базовых объектов данных.

HTML:

<script id="template" type="text/x-kendo-tmpl">
    #
    if (data.disabled != null) {# 
    <span class="tbd" > ${data.text} - is disabled </span> 
    # } else { #
    <span>${data.text}</span > #
    }#
</script>
<input id="color" value="1" />

jQuery и пользовательский интерфейс Kendo (обратите внимание на дополнительное свойство disabled для элемента Orange и использование события dataBound):

var data = [{
    text: "Black",
    value: "1"
}, {
    text: "Orange",
    value: "2",
    disabled: "disabled"
}, {
    text: "Grey",
    value: "3"
}];

$("#color").kendoDropDownList({
    dataTextField: "text",
    dataValueField: "value",
    dataSource: data,
    index: 0,
    template: kendo.template($("#template").html()),
    dataBound: function (e) {
        $(".tbd").parent().click(false);
    }
});

CSS для высева:

.tbd{
   color:#777777
}

Ответ 2

В зависимости от вопроса здесь вы можете получить доступ к соответствующему элементу и изменить атрибуты следующим образом:

var ds = $('#YourCombo').data().kendoComboBox.dataSource;

//someIndex is the index of the item in the dataSource
ds.data()[someIndex].set("enabled","False");

Ответ 3

В то время как принятый ответ предотвратит щелчок по элементу, он по-прежнему разрешает навигацию по клавиатуре (и выглядит довольно хакерской).

Использование DataItems для определения того, какой элемент следует отключить, действительно является способом выхода, но вместо удаления обработчика кликов проще реализовать обработчик Select, который остановит цепочку. Этот метод поддерживается и документируется Kendo:

Вызывается, когда элемент из всплывающего окна выбирается пользователем либо с помощью мышь/космос или с клавиатурной навигацией.

...

e.preventDefault Function

Если invoked предотвращает действие select. Виджет сохранит предыдущий выбранный элемент.

Осталось только определить, хотим ли мы отменить выбор или нет, что тривиально, если ваш элемент данных сохраняет свойство, которое идентифицирует, доступно ли оно или нет:

function Select(e) {
    if (e.sender.dataItem(e.item).disabled) {
        e.preventDefault();
    }
}

Использование шаблона для ввода определенного класса не требуется, но я бы по-прежнему рекомендовал его, если бы только для правильного стиля.

Ответ 4

В настоящее время Kendo не поддерживает такую ​​функциональность, но это самый простой взлом, который я обнаружил, чтобы отключить опцию в раскрывающемся списке Kendo.

$("#" + id + "_listbox .k-item")[index].disabled = true;

где id → ID вашего выпадающего списка     
    index → положение элемента в выпадающем меню, которое вы хотите отключить.

Надеюсь, это поможет. Наслаждайтесь:)

Ответ 5

Вы можете попробовать что-то вроде этого:

 var dropDown = $("#yourDropdown").data("kendoDropDownList");
 dropDown.enable(false);

Ответ 6

Если вы хотите отключить весь элемент управления и используете API-интерфейс MVC, вы можете использовать метод .HtmlAttributes():

@Html.Kendo()
.DropDownList()
.HtmlAttributes(new { @disabled = "disabled" })

Ответ 7

Попробуйте это

    $('#YourDropDown').attr('disabled', 'disabled');