ASP.NET データテーブルをバインドしてコンボボックスの値を設定する
コンボボックス(htmlのselectやASPコントロールのDropDownList)の要素にデータテーブルの値をセットする方法を紹介します。
ASP.NET コンボボックス(ドロップダウンリスト)のアイテムを追加するでコンボボックスにアイテムを1件ずつ追加していく方法を紹介しましたが、SQLなどで取得したDataTableをそのままバインドすることも可能です。
以下のようにコンボボックスを定義しているとします。
<select id="Select1" runat="server"></select>また、SQLなどで以下の形式でDataTableを取得したとします。
| Text | Value |
|---|---|
| 社員A | 1 |
| 社員B | 2 |
| 社員C | 3 |
| 社員D | 4 |
DataTextFieldには画面に表示するテキストとして設定したい列名を指定し、DataValueFieldにはValue値として設定したい列名を指定します。
'リスト要素設定
Select1.DataSource = dt 'dtは上述のDataTable
Select1.DataTextField = "Text"
Select1.DataValueField = "Value"
Select1.DataBind()先頭に空白行を設定する
先頭に空白行を設定したい場合は、バインドする前に、DataTableに対して空白行を追加しておきます。
Dim newrow As DataRow = dt.NewRow
newrow("Text") = ""
newrow("Value") = ""
dt.Rows.InsertAt(newrow, 0) '先頭に追加