SqlDataSource1.InsertCommand = "insert into Categories (CategoryName) Values ('" & DirectCast(e.Value, DropDownItem).Text & "')" SqlDataSource1.Insert()
WebDropDown™ によってカスタムのエンドユーザーが入力した値を保持することが可能となります。たとえば、エンドユーザーが初期のドロップダウンリストにない値を入力したい場合があります。ここでさらに重要なのは再度入力せずに項目を後で選択できるように値を保持したい場合があることです。エンドユーザーが入力したカスタム値を他のエンドユーザーが選択できるようにしたい場合さえあります。WebDropDown は、アプリケーションを使用することによって保持して任意の人が再度選択できるように、エンドユーザーが入力したカスタム値をバックエンドに保持することを可能にするために簡単に使用できる高度なイベント処理メカニズムを公開しています。
フォームに WebDropDown コントロールを配置して、デフォルト名のままにしておきます。
ドロップダウンを Northwind データベースの Categories テーブルにバインドします。WebDropDown を SqlDataSource にバインドする方法の詳細は、 「WebDropDown を SQL データ ソースにバインド」を参照してください。名前が SqlDataSource1 の SqlDataSource コンポーネントができます。
Microsoft® Visual Studio® [プロパティ] ウィンドウで、WebDropDown の TextField プロパティを CategoryName に、 ValueField プロパティを CategoryID に設定します。
WebDropDown コントロールの EnablePersistingCustomValues プロパティと EnableCustomValueSelection プロパティを True に設定します。
WebDropDown コントロールの ItemAdded イベントのためにイベント ハンドラーを追加します。このイベントは、エンドユーザーが値を WebDropDown エディターに入力して値がリストに存在しない時には常に EnablePersistingCustomValues プロパティと共に発生します。
注: 項目がクライアントで追加された時、または EnablePersistingCustomValues プロパティが True に設定され、カスタム値が入力されるときに限り、ItemAdded イベントは発生します。
WebDropDown コントロールの ItemAdded イベント ハンドラーで、以下のコードを追加して、カスタムのエンドユーザーが入力した値をバックエンドに挿入します:
Visual Basic の場合:
SqlDataSource1.InsertCommand = "insert into Categories (CategoryName) Values ('" & DirectCast(e.Value, DropDownItem).Text & "')" SqlDataSource1.Insert()
C# の場合:
SqlDataSource1.InsertCommand = "insert into Categories (CategoryName) Values ('" +((DropDownItem)e.Value).Text + "')"; SqlDataSource1.Insert();
上記のコードで、ItemAdded イベントを発生させている項目の値を DropDownItem クラスのオブジェクトに最初にキャストし、項目の Text を取得してデータベースに挿入します。
アプリケーションを保存して実行します。以下の画像のように入力するカスタム値が保持されるのを確認します:
カスタム値を入力する前:
"Biryani" というカスタム値を入力した後: