CheckBoxList Web サーバー コントロール
複数選択のチェック ボックス グループを作成します。このコントロールは、データ ソースへの連結をサポートします。
<asp:CheckBoxList id="CheckBoxList1"
AutoPostBack="True|False"
CellPadding="Pixels"
DataSource='<% databindingexpression %>'
DataTextField="DataSourceField"
DataValueField="DataSourceField"
RepeatColumns="ColumnCount"
RepeatDirection="Vertical|Horizontal"
RepeatLayout="Flow|Table"
TextAlign="Right|Left"
OnSelectedIndexChanged="OnSelectedIndexChangedMethod"
runat="server">
<asp:ListItem value="value"
selected="True|False">
Text
</asp:ListItem>
</asp:CheckBoxList>
解説
CheckBoxList コントロールは、データ連結を使用して動的に生成できる、複数選択のチェック ボックス グループを作成します。CheckBoxList コントロールに表示する項目を指定するには、CheckBoxList コントロールの開始タグと終了タグの間に、各エントリの ListItem 要素を挿入します。
メモ 複数の CheckBox コントロールを使用することもできます。データ連結を使用してチェック ボックスのセットを作成する場合は、CheckBoxList コントロールを使用する方が簡単です。しかし、個別の CheckBox コントロールを使用する方が、レイアウトを柔軟に制御できます。
CheckBoxList コントロールは、データ連結もサポートします。コントロールをデータ ソースに連結するには、まずコントロールに表示する項目を含む、System.Collections.ArrayList オブジェクトなどのデータ ソースを作成します。次に、Control.DataBind メソッドを使用して、そのデータ ソースを CheckBoxList コントロールに連結します。DataTextField プロパティと DataValueField プロパティを使用して、コントロール内の各リスト項目の Text プロパティと Value プロパティに連結するデータ ソース フィールドをそれぞれ指定します。これで、CheckBoxList コントロールに、データ ソースの情報が表示されるようになります。
CheckBoxList コントロールで選択されている項目を確認するには、Items コレクションを反復処理して、コレクション内の各項目の Selected プロパティを調べます。
RepeatLayout プロパティと RepeatDirection プロパティを使用すると、リストの表示方法を指定できます。RepeatLayout が RepeatLayout.Table (既定値) に設定されている場合、リストはテーブル形式で表示されます。RepeatLayout.Flow に設定されている場合、リストはテーブル構造を使用せずに表示されます。既定では、RepeatDirection は RepeatDirection.Vertical に設定されています。このプロパティを RepeatDirection.Horizontal に設定すると、リストは水平方向に表示されます。
注意 テキストは、CheckBoxList コントロールに表示される前には HTML エンコードされません。これにより、テキストの HTML タグ内にスクリプトを埋め込むことができるようになります。コントロールの値がユーザーによって入力された場合は、セキュリティの脆弱性への対策として、入力された値を必ず検証してください。
CheckBoxList Web サーバー コントロールのプロパティとイベントの詳細については、CheckBoxList クラスのドキュメントを参照してください。
例
.aspx ファイルで CheckBoxList コントロールを宣言する方法を次の例に示します。このリストには 6 つの項目が含まれており、同時に複数の項目を選択できます。ユーザーがいずれかのボックスをオンにしたときに、ページがすぐにサーバーにポスト バックされるわけではありません。ページがポスト バックされるのは、Button クリックなどの他のイベントが発生したときです。OnSelectedIndexChanged イベントに対するメソッドが宣言されていないため、そのイベントのハンドラは呼び出されません。
<asp:CheckBoxList id="Check1"
RepeatLayout="flow"
runat="server">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2</asp:ListItem>
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4</asp:ListItem>
<asp:ListItem>Item 5</asp:ListItem>
<asp:ListItem>Item 6</asp:ListItem>
</asp:CheckBoxList>
CheckBoxList コントロール内で選択されているチェック ボックスを確認する方法を次の例に示します。このコードは、コントロールの Items コレクションを反復処理して、各項目の Selected プロパティを調べます。その後、選択されている項目が Label コントロールに表示されます。
Sub Button1_OnClick(sender As Object, e As EventArgs)
Dim s As String
Dim i As Integer
s = "Selected items:<br>"
For i=0 to Check1.Items.Count - 1
If Check1.Items(i).Selected Then
s = s & Check1.Items[i].Text & "<br>"
End If
Next i
Label1.Text = s
End Sub
[C#]
void Button1_OnClick(Object sender, EventArgs e)
{
string s;
s = "Selected items:<br>";
for (int i=0; i < Check1.Items.Count; i++)
{
if ( Check1.Items[i].Selected )
{
s = s + Check1.Items[i].Text + "<br>";
}
}
Label1.Text = s;
}