[aspx] <asp:Literal ID="RptLiteral" runat="server" /><br /> <asp:Literal ID="GrdLiteral" runat="server" /><br /> <asp:Literal ID="DlLiteral" runat="server" /><br /> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1"> <ItemTemplate> <div> <asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("CategoryID") %>' /> </div> </ItemTemplate> </asp:Repeater> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID" DataSourceID="AccessDataSource1"> <Columns> <asp:TemplateField HeaderText="CategoryID" InsertVisible="False"> <ItemTemplate> <asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("CategoryID") %>' /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Description" HeaderText="Description" /> <asp:BoundField DataField="CategoryName" HeaderText="CategoryName" /> </Columns> </asp:GridView> <asp:DataList ID="DataList1" runat="server" DataKeyField="CategoryID" DataSourceID="AccessDataSource1"> <ItemTemplate> CategoryID: <asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("CategoryID") %>' /><br /> Description: <asp:Label ID="DescriptionLabel" runat="server" Text='<%# Eval("Description") %>' /> <br /> CategoryName: <asp:Label ID="CategoryNameLabel" runat="server" Text='<%# Eval("CategoryName") %>' /> <br /><br /> </ItemTemplate> </asp:DataList></div> <asp:Button ID="Button1" runat="server" Text="Button" /> <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/Northwind.mdb" SelectCommand="SELECT [CategoryID], [Description], [CategoryName] FROM [Categories]" />
GridView
The GridView contains a collection of GridViewRow objects. Once you reference the collection, and iterate through it, you can use the FindControl method of the GridViewRow to access controls:
[C#] string Grd = "GridView Items Checked:<br />"; foreach (GridViewRow gvr in GridView1.Rows) { CheckBox chk = (CheckBox)gvr.FindControl("CategoryID"); if (chk.Checked) { Grd += (chk.Text + "<br />"); } } GrdLiteral.Text = Grd;
[VB] Dim Grd As String = "GridView Items Checked:<br />" For Each gvr As GridViewRow In GridView1.Rows Dim chk As CheckBox = DirectCast(gvr.FindControl("CategoryID"), CheckBox) If chk.Checked Then Grd += (chk.Text + "<br />") End If Next GrdLiteral.Text = Grd
Repeater
The Repeater has an Items collection. In this example, the Count property of the Items collection is retrieved and used with a for.. next loop [C#] While... End While [VB] to iterate the collection. The FindControl method of each Item is used to reference the CheckBox again:
[C#] string Rpt = "Repeater Items Checked:<br />"; for (int i = 0; i < Repeater1.Items.Count; i++) { CheckBox chk = (CheckBox)Repeater1.Items[i].FindControl("CategoryID"); if (chk.Checked) { Rpt+=(chk.Text + "<br />"); } } RptLiteral.Text = Rpt;
[VB] Dim Rpt As String = "Repeater Items Checked:<br />" Dim i As Integer = 0 While i < Repeater1.Items.Count Dim chk As CheckBox = DirectCast(Repeater1.Items(i).FindControl("CategoryID"), CheckBox) If chk.Checked Then Rpt += (chk.Text + "<br />") End If i += 1 End While RptLiteral.Text = Rpt
DataList
The DataList also has an Items collection, but this time, foreach [C#] For Each [VB] is used to iterate the collection. for... next could just as easily be used as in the Repeater example:
[C#] string Dl = "Datalist Items Checked:<br />"; foreach (DataListItem dli in DataList1.Items) { CheckBox chk = (CheckBox)dli.FindControl("CategoryID"); if (chk.Checked) { Dl += (chk.Text + "<br />"); } } DlLiteral.Text = Dl;
[VB] Dim Dl As String = "Datalist Items Checked:<br />" For Each dli As DataListItem In DataList1.Items Dim chk As CheckBox = DirectCast(dli.FindControl("CategoryID"), CheckBox) If chk.Checked Then Dl += (chk.Text + "<br />") End If Next DlLiteral.Text = Dl