ASP.Netのお勉強

CheckBoxListのバインド時にチェック@ASP.Net

CheckBoxListを表示して、
DataBind時にチェックを行います。

画面にCheckBoxListを配置します。
CheckBoxListのDataTextField、DataValueFieldを指定します。

ページロード時に、DataTableを作成します。
CheckBoxListのDataSourceに設定して、DataBindを行います。

DataBoundをハンドルします。
CheckBoxList.Itemsでループを行い。
各ListItemに対して、チェックを行うかの処理を記述します
以下では、DataValueFieldを元にチェックを行います。

●aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>CheckBoxListにチェック</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:CheckBoxList ID="CheckBoxList1" runat="server" DataTextField="chkText" DataValueField="chkValue">
        </asp:CheckBoxList>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>


●aspx.vb

Imports System.data

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            Dim dt As DataTable
            Dim dr As DataRow

            dt = New DataTable()

            dt.Columns.Add("chkText", GetType(String))
            dt.Columns.Add("chkValue", GetType(Boolean))

            dr = dt.NewRow
            dr("chkText") = "チェックボックス1"
            dr("chkValue") = True
            dt.Rows.Add(dr)

            dr = dt.NewRow
            dr("chkText") = "チェックボックス2"
            dr("chkValue") = False
            dt.Rows.Add(dr)

            dr = dt.NewRow
            dr("chkText") = "チェックボックス3"
            dr("chkValue") = True
            dt.Rows.Add(dr)

            Me.CheckBoxList1.DataSource = dt.DefaultView
            Me.CheckBoxList1.DataBind()
        End If

    End Sub

    Public Sub CheckBoxList1_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.DataBound
        Dim obj As ListItem

        For Each obj In CheckBoxList1.Items
            If obj.Value Then
                obj.Selected = True
            End If
        Next
    End Sub
End Class

Copyright (C) ASP.Netのお勉強. All Rights Reserved.