1

KendoUI DropDownList にアイテムのリストがあります。Razor 構文を使用して生成されます

私がしたいこと:

  • ユーザーが探しているものがリストから見つからない場合は、「新規...」(静的な値) を選択します。

  • 非表示のテキスト フィールドが表示され、新しい値を追加できるようになります。

  • 新しい値は、コントローラー メソッド (WIP) にポストバックする必要があります。

私が考え出したこと:

  • データを取得する

  • 「新規」オプションを静的に追加する

これはこれまでのところうまくいきます:

  • コントローラー アクション メソッドからデータを取得し、期待どおりにリストを表示します。

  • 「Change」と「DataBound」の 2 つのイベントにバインドできます。

問題:

jQuery の「ready」メソッドを使用して、「New..」という静的な値を追加しています。この値を複製しています。無限ループだと思います。

だから、この時点で立ち往生しています

部分ビュー:

 @(Html.Kendo().DropDownListFor(model => model.ClientType)
                              .DataSource(ds => ds.Read(read => read.Action("FetchAllClientTypes", "ClientType")))
                              .DataTextField("Description")
                              .DataValueField("Id")
                              .AutoBind(true)
                              .Events(e =>
                               {
                                   e.Change("onClientTypeChange").DataBound("onClientTypeDataBound");
                               })
                              .ToClientTemplate()
                      )
                @Html.ValidationMessageFor(model => model.ClientType)

Javascript:

/*When dropdown is bound, add "New..."*/
/* Duplicates "New". Appears to be infinite. */
function onClientTypeDataBound() {
    var clientTypesDropDownList = $('#ClientType').data('kendoDropDownList');
    clientTypesDropDownList.dataSource.add({ Description: 'New...', value: '-1' });

};

/**Works**/
function onClientTypeChange() {

    alert('Testing On change');
};
4

1 に答える 1

0

あなたが説明したのは、ComboBox ウィジェットによるすぐに使えるサポートです。項目コレクションにそのような値がない場合、ComboBox の値はユーザーが入力したテキストになります。ここで ComboBox ウィジェットを詳しく見てみましょう(具体的には、さまざまな値を操作するときに getValue ボタンを使用します)。

于 2014-03-03T17:32:01.103 に答える