6

3 つのオプションを含む Kendo DropDownList (name=Function) があります。1 つのオプションが選択されると、別の DropDownList (name=Parents) に入力するデータを取得するための ajax 呼び出しがトリガーされます。これは期待どおりに機能します。ただし、ユーザーが元の DropDownList の「機能」を別の選択に戻した場合は、クリア/リセット (すべてのオプションを削除) し、「親」の DropDownList を無効にする必要があります。

function LoadKendoDropdownContents(dropdownBoxId, data) {
  var dropdownBox = $("#" + dropdownBoxId).data("kendoDropDownList");

  if (data === "" || data === null || $.isEmptyObject(data)) {
    var dataSource = [];
  }
  else {    
    var dataSource = data;
  }

  dropdownBox.setDataSource(dataSource);
}

問題を引き起こしているのは、実際には「var dataSource = []」です。それが適用されたときに「親」DropDownListが更新/再バインドされないようです。選択したオプション以外はすべて削除されますが、以前に選択したオプションを削除するにはどうすればよいですか? もう一度「空」にしたい。

ありがとうございました。

----私が使用したソリューション----

function LoadKendoDropdownContents(dropdownBoxId, data) {
  var dropdownBox = $("#" + dropdownBoxId).data("kendoDropDownList");

  if (data === "" || data === null || $.isEmptyObject(data)) {
    var dataSource = new kendo.data.DataSource({
      data: []
    });

    dropdownBox.text(" --- ");
    dropdownBox.value(-1);
  }
  else {
    var dataSource = new kendo.data.DataSource({
      data: data
    });

    dropdownBox.text("[Select]");
    dropdownBox.value(-1);
  }

  dropdownBox.setDataSource(dataSource);
}
4

2 に答える 2

8

カスケード ドロップダウン機能を使用する方が簡単な場合があります。

dataSource を変更すると、ドロップダウン項目が削除されますが、次を呼び出して、選択したテキストをクリアし、ボックスを無効にする必要もあります。

dropdownBox.setDataSource(dataSource);
dropdownBox.text('');
dropdownBox.enable(false);
于 2013-09-09T00:06:34.043 に答える
1

親ドロップダウンと子ドロップダウンの両方にデータ ソースを定義した場合は、子で cascadeFrom('parent') メソッドを使用して、null またはクリアとして識別できる値を設定できます。

于 2013-09-08T22:12:02.157 に答える