Neste exemplo vou mostrar como pegar o checkbox selecionado dentro de um repeater.
Para pegar o valor de um checkbox selecionado dentro de um repeater, eu usei um HiddenField.
No HiddenField coloquei o ID, e no checkbox o Text, veja o exemplo.
Default.aspx
<div>
<asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<div>
<asp:HiddenField ID="HiddenField1" Value='<%# ((ListItem)Container.DataItem).Value %>' runat="server" />
<asp:CheckBox ID="CheckBox1" Text='<%# ((ListItem)Container.DataItem).Text %>' runat="server" />
</div>
</ItemTemplate>
</asp:Repeater>
<asp:Button ID="btnSave" Text="Salvar" runat="server" onclick="btnSave_Click" />
</div>
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
//Carregar o Repeater apenas quando a página não for PostBack
//Para não perder os valores selecionado do repeater
if (!Page.IsPostBack)
{
//Criando uma lista simples para popular o repeater
List<ListItem> exemplo = new List<ListItem>() {
new ListItem("item 1","1"),
new ListItem("item 2","2"),
new ListItem("item 3","3"),
new ListItem("item 4","4")
};
//Definindo a lista como DataSource do repeater
Repeater1.DataSource = exemplo;
Repeater1.DataBind();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
//Pegar todos os itens do repeater
for (int i = 0; i < Repeater1.Items.Count; i++)
{
//Pegando o HiddenField dentro do repeater
HiddenField HiddenField1 = (HiddenField)Repeater1.Items[i].FindControl("HiddenField1");
//Pegando o CheckBox dentro do repeater
CheckBox CheckBox1 = (CheckBox)Repeater1.Items[i].FindControl("CheckBox1");
//Verificar se foi selecionado
if (CheckBox1.Checked)
{
//Pegar o Value e o Text dos itens selecionados do repeater
Response.Write("Value:" + HiddenField1.Value + " Text:" + CheckBox1.Text + "<br />");
}
}
}