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');
};