6

最初の DDL の値が読み込まれ、ビューモデルの値にバインドされているときに、2 番目の 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 イベントをサブスクライブし、そこから 2 番目の DDL を無効にしようとしましたが、うまくいきません。

JS:

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

3 に答える 3

6

これは古い質問ですが、CascadeFromイベントにバインドしてもドロップダウンが有効になることはありません。これは、剣道ライブラリのコードが実行順序の後半で再び有効になっているためです。

代わりに、イベントにバインドしDataBoundてドロップダウンを無効にします。このイベントは実行スタックの後半で発生し、Kendo コードが入力を有効にした後、入力を無効にします。

于 2015-09-02T03:31:12.980 に答える
1

このコードは、角度ディレクティブ構成で機能します

dataBound: function (e) {
            this.enable(false);
        }
于 2016-03-27T05:51:24.237 に答える