This tutorial, how <asp:CheckBox/> worked in GridView, Repeater and DataList control to provide the user with an intuitive way of selecting multiple rows of the GridView, Repeater and DataList.
<asp:Repeater ID="RepeaterExample" runat="server" DataSourceID="AccessDataSourceExample">
<ItemTemplate>
<div>
<asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("CategoryID") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
<asp:GridView ID="GridViewExample" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID"
DataSourceID="AccessDataSourceExample">
<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="DataListExample" runat="server" DataKeyField="CategoryID"
DataSourceID="AccessDataSourceExample">
<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:Literal ID="rptLiteralExample" runat="server" /><br />
<asp:Literal ID="grD_listiteralExample" runat="server" /><br />
<asp:Literal ID="dstliteralExample" runat="server" /><br />
<asp:Button ID="ButtonExample" runat="server" Text="Button" />
<asp:AccessDataSource ID="AccessDataSourceExample" runat="server" DataFile="~/App_Data/MyDatabase.mdb"
SelectCommand="SELECT [CategoryID], [Description], [CategoryName] FROM [Categories]" />
GridView Example:
The <asp: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:
string Grd = "GridView Items Checked:<br />";
foreach (GridViewRow gvr in GridViewExample.Rows)
{
CheckBox chk = (CheckBox)gvr.FindControl("CategoryID");
if (chk.Checked)
{
Grd += (chk.Text + "<br />");
}
}
grD_listiteralExample.Text = Grd;
Repeater Example:
The <asp:Repeater /> has an Items collection. In this example, the Count property of the Items collection is retrieved and used with a for.. next loop While ... End to iterate the collection. The FindControl method of each Item is used to reference the CheckBox again:
string Rpt = "Repeater Items Checked:<br />";
for (int i = 0; i < RepeaterExample.Items.Count; i++)
{
CheckBox chk = (CheckBox)RepeaterExample.Items[i].FindControl("CategoryID");
if (chk.Checked)
{
Rpt+=(chk.Text + "<br />");
}
}
rptLiteralExample.Text = Rpt;
DataList Example:
The <asp:DataList /> also has an Items collection, but this time, foreach is used to iterate the collection. for... next could just as easily be used as in the Repeater example:
string Dl = "Datalist Items Checked:<br />";
foreach (DataListItem dli in DataListExample.Items)
{
CheckBox chk = (CheckBox)dli.FindControl("CategoryID");
if (chk.Checked)
{
Dl += (chk.Text + "<br />");
}
}
dstliteralExample.Text = Dl;
<asp:Repeater ID="RepeaterExample" runat="server" DataSourceID="AccessDataSourceExample">
<ItemTemplate>
<div>
<asp:CheckBox ID="CategoryID" runat="server" Text='<%# Eval("CategoryID") %>' />
</div>
</ItemTemplate>
</asp:Repeater>
<asp:GridView ID="GridViewExample" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID"
DataSourceID="AccessDataSourceExample">
<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="DataListExample" runat="server" DataKeyField="CategoryID"
DataSourceID="AccessDataSourceExample">
<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:Literal ID="rptLiteralExample" runat="server" /><br />
<asp:Literal ID="grD_listiteralExample" runat="server" /><br />
<asp:Literal ID="dstliteralExample" runat="server" /><br />
<asp:Button ID="ButtonExample" runat="server" Text="Button" />
<asp:AccessDataSource ID="AccessDataSourceExample" runat="server" DataFile="~/App_Data/MyDatabase.mdb"
SelectCommand="SELECT [CategoryID], [Description], [CategoryName] FROM [Categories]" />
GridView Example:
The <asp: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:
string Grd = "GridView Items Checked:<br />";
foreach (GridViewRow gvr in GridViewExample.Rows)
{
CheckBox chk = (CheckBox)gvr.FindControl("CategoryID");
if (chk.Checked)
{
Grd += (chk.Text + "<br />");
}
}
grD_listiteralExample.Text = Grd;
Repeater Example:
The <asp:Repeater /> has an Items collection. In this example, the Count property of the Items collection is retrieved and used with a for.. next loop While ... End to iterate the collection. The FindControl method of each Item is used to reference the CheckBox again:
string Rpt = "Repeater Items Checked:<br />";
for (int i = 0; i < RepeaterExample.Items.Count; i++)
{
CheckBox chk = (CheckBox)RepeaterExample.Items[i].FindControl("CategoryID");
if (chk.Checked)
{
Rpt+=(chk.Text + "<br />");
}
}
rptLiteralExample.Text = Rpt;
DataList Example:
The <asp:DataList /> also has an Items collection, but this time, foreach is used to iterate the collection. for... next could just as easily be used as in the Repeater example:
string Dl = "Datalist Items Checked:<br />";
foreach (DataListItem dli in DataListExample.Items)
{
CheckBox chk = (CheckBox)dli.FindControl("CategoryID");
if (chk.Checked)
{
Dl += (chk.Text + "<br />");
}
}
dstliteralExample.Text = Dl;