Kendo UI DropDownList:是否可以禁用一个选项?

时间:2013-08-15 06:55:46

标签: kendo-ui

是否可以禁用DropDownList中的条目? 例如,我可以阻止用户选择“请选择”条目。

4 个答案:

答案 0 :(得分:3)

Kendo目前不支持此类功能,但这是我发现在Kendo Dropdown中禁用选项的最简单的黑客攻击。

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

其中id - >您的下拉列表的ID
index - >要禁用的下拉列表中元素的位置。

希望它有所帮助。享受:)

答案 1 :(得分:2)

您可以通过Select-Event禁用此选项。

这很简单:

$('input').kendoComboBox({
    dataTextField: 'text',
    dataValueField: 'id',
    dataSource: {
        transport: {
            read: function(options) {
                //instead, specify ajax call or get data from somewhere else
                options.success([{ id: -1, text: 'Please select' }, {id: 1, text: 'A'}]);
            }
        }
    },
    select: function(e) {
        var dataItem = this.dataItem(e.item.index());
        if(dataItem.id === -1) {
            e.preventDefault();
        }
    }
});

答案 2 :(得分:2)

我相信这是一项验证工作。如果你必须在下拉列表中显示不可选择的条目,请给它们不同的css(灰色它们),并且一旦选择了值,就采取一些操作 - 验证消息。通过下拉列表取消选择或执行任何其他技巧会使用户感到困惑。如果你有机会从下拉列表中删除这些项目,如果无法选择它们就不要显示它们 - 正如RGraham建议的那样。下面是一个如何验证可选标签(您要求“请选择”)条目以及如何在更改后获取所选值的示例,这应该可以帮到您。

小提琴:http://jsfiddle.net/vojtiik/KpMk4/1/

// create DropDownList from input HTML element
 var ddl = $("#color").kendoDropDownList({
     dataTextField: "text",
     dataValueField: "value",
     dataSource: data,
     index: 0,
     optionLabel: "Select color...",
     change: function () {
        validator.validate();
         if (ddl.value() == 3)
         {
             console.log('Do something ?');
         }

     }
 }).data("kendoDropDownList");

 var validator = $("#color").kendoValidator().data("kendoValidator");  

答案 3 :(得分:0)

在我的情况下,如果用户没有授权,我必须禁用下拉选项。我无法禁用此选项,但我已删除此选项。愿这段代码可以帮到你。

   @(Html.Kendo().DropDownListFor(i => i.CallTypeId)

                                                    .Name("CallTypeId")
                                                    .HtmlAttributes(new { style = "width:100%" })
                                                    .DataTextField("MasterValueName")
                                                    .DataValueField("MasterValueId")
                                                    .Events(x => x.Open("ManageSecurity"))
                                                    .DataSource(source =>
                                                    {
                                                        source.Read(read =>
                                                        {

                                                            read.Action("GetCallType", "Common", new { Area = "" });

                                                        });
                                                    })
                                                    .OptionLabel("Select Call Type")
                                            )



 function ManageSecurity() {
            debugger;
            var result = '@TrackingHelper.CurrentUser.IsViewTestCallType';
            if (result == "False") {
                var ds = $("#CallTypeId").data("kendoDropDownList").dataSource;
                debugger;
                var elementToRemove = null;
                for (var i = 0; i < ds._data.length; i++) {
                    var element = ds._data[i];
                    debugger;
                    if (ds._data[i].MasterValueId === "335d2eae-dc47-40f7-b616-a2501b2f60bc") {
                        debugger;
                        elementToRemove = ds._data[i];
                    }
                }
                if (elementToRemove) {
                    debugger;
                    ds.remove(elementToRemove);
                }

            }
            else {
                debugger;

            }
        }