【问题标题】:How to disable cascaded Kendo DropDownLists?如何禁用级联 Kendo DropDownLists?
【发布时间】:2013-04-19 21:24:20
【问题描述】:

我有两个 Kendo DropDownLists,我想在第一个 DDL 的值被加载并绑定到我的视图模型的值时禁用第二个 DDL。

所以我有这样的代码:

@(Html.Kendo().DropDownList()
      .Name("FormGroupId")
      .HtmlAttributes(new { style = "width:250px" })
      .OptionLabel("Select form group...")
      .Template("#= data.Name # - #= data.Version #")
      .DataTextField("Name")
      .DataValueField("Id")
      .Events(events =>
      {
          events.Change("onFormGroupChanged");
          events.Select("onFormGroupSelected");
          events.Cascade("onFormGroupCascaded");
      })
      .DataSource(source =>
      {
            source.Read(read => { read.Route(RouteConfig.GetFormGroupNames.Name); });
      })
)

@(Html.Kendo().DropDownList()
      .Name("Schema")
      .HtmlAttributes(new { style = "width:250px" })
      .OptionLabel("Select schema...")
      .DataTextField("SchemaName")
      .DataValueField("SchemaId")
      .DataSource(source => 
      {
          source.Read(read =>
          {
              read.Route(RouteConfig.FilterFormSchemas.Name).Data("filterSchemas");
          })
          .ServerFiltering(true);
      })
      .Enable(false)
      .AutoBind(false)
      .CascadeFrom("FormGroupId")
)

我在第一个 DDL 上订阅 Cascade 事件并尝试从那里禁用第二个 DDL,但它不起作用。

JS:

function onFormGroupCascaded(e) {
    $("#Schema").data("kendoDropDownList").enable(false);
}

【问题讨论】:

    标签: c# javascript telerik kendo-ui kendo-asp.net-mvc


    【解决方案1】:

    你已经在这样做了。

    将事件添加到第一个下拉列表:

    .Events(e =>
    {
        e.Change("change").Select("select").Open("open").Close("close").DataBound("dataBound");
    })
    

    使用 JavaScript,处理更改事件

    <script>
        function change() {
            // get a reference to the dropdown list
            var dropdownlist = $("#dropdownlist").data("kendoDropDownList");
            // disable the dropdown list
            dropdownlist.enable(false);
        };
    </script>
    

    看起来您已经在这样做了。你得到什么样的错误?

    【讨论】:

    • 我很确定这行不通。至少在我的情况下它没有。 Kendo 库中的代码稍后会简单地重新启用下拉菜单。
    • 绑定到 DataBound 事件以禁用下拉菜单,而不是作为@LukeFranklin 的答案。
    • 这真的对我有用。我一直在寻找这个答案几个小时。谢谢。
    • 不工作,级联事件是所有事件之后
    【解决方案2】:

    这是一个老问题,但绑定到CascadeFrom 事件不会阻止启用下拉菜单。这是因为 Kendo 库中的代码在稍后的执行顺序中重新启用了它。

    相反,绑定到DataBound 事件以禁用下拉菜单。此事件在执行堆栈中稍后发生,并在 Kendo 代码启用后禁用输入。

    【讨论】:

    • 你能在这里提供更多细节吗?
    • 什么不清楚?默认情况下,Kendo DropDown 将在 CascadeFrom 事件触发后启用。
    • 呃,我的意思是第二段更详细一点;-)(我是剑道的初学者,抱歉。)
    • 我可能不得不将您指向该文档:demos.telerik.com/kendo-ui/dropdownlist/events
    • 一旦您对剑道有了更熟悉的了解,这应该是有意义的。祝你好运。
    【解决方案3】:

    此代码适用于角度指令配置

    dataBound: function (e) {
                this.enable(false);
            }
    

    【讨论】:

    • Stack Overflow 接受这样的纯代码回答,但对其他人来说并不是非常的帮助。请edit您的回答并解释您的代码是如何工作的。有时,还有为什么 OP 的代码不起作用
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多