如何禁用级联的Kendo DropDownLists?

Jev*_*sov 5 javascript c# telerik kendo-ui kendo-asp.net-mvc

我必须使用Kendo DropDownLists,我想在第一个DDL的值被加载并且限制为我的viewmodel的值时禁用第二个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); });
      })
)
Run Code Online (Sandbox Code Playgroud)

和

@(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")
)
Run Code Online (Sandbox Code Playgroud)

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

JS:

function onFormGroupCascaded(e) {
    $("#Schema").data("kendoDropDownList").enable(false);
}
Run Code Online (Sandbox Code Playgroud)

HaB*_*aBo 14

你已经这样做了.

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

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

使用JavaScript处理change事件

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

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

  • 我相当肯定这行不通。至少在我的情况下它没有。Kendo 库中的代码只是稍后重新启用下拉菜单。 (2认同)

Luk*_*lin 5

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

而是绑定到DataBound事件以禁用下拉列表。此事件稍后在执行堆栈中发生,并在Kendo代码启用输入后将其禁用。