3

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

4

4 回答 4

4

Kendo 目前不支持此类功能,但这是我发现禁用 Kendo Dropdown 选项的最简单方法。

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

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

希望能帮助到你。享受 :)

于 2014-02-07T19:13:22.573 回答
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");  
于 2013-08-15T09:51:53.747 回答
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();
        }
    }
});
于 2013-08-15T07:37:24.767 回答
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;

            }
        }
于 2015-12-29T10:24:14.660 回答