How can I loop through Items in the Item Template from an asp:Repeater? How can I loop through Items in the Item Template from an asp:Repeater? asp.net asp.net

How can I loop through Items in the Item Template from an asp:Repeater?


It sounds to me like you want to use the ItemDataBound event.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx

You will want to check the ItemType of the RepeaterItem so that you don't attempt to find the checkbox in Header/Footer/Seperator/Pager/Edit

Your event would look something along the lines of:

void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e){    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)    {        var checkBox = (CheckBox) e.Item.FindControl("ckbActive");        //Do something with your checkbox...        checkBox.Checked = true;    }}

This event can be raised by adding the event in your code behind like so:

rptItems.ItemDataBound += new RepeaterItemEventHandler(rptItems_ItemDataBound);

Or by adding it to the control on the client:

onitemdatabound="rptItems_ItemDataBound"

Alternatively you can do as the others suggested and iterate over the RepeaterItems, however you still need to check the itemtype.

foreach (RepeaterItem item in rptItems.Items){    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)    {        var checkBox = (CheckBox)item.FindControl("ckbActive");        //Do something with your checkbox...        checkBox.Checked = true;    }}

You would want to do that in the Page PreRender, after the Repeater has been bound.


Try this.

for each (RepeaterItem ri in Repeater1.Items){     CheckBox CheckBoxInRepeater = ri.FindControl("CheckBox1") as CheckBox;    //do something with the checkbox}


for (int item = 0; item < Repeater.Items.Count; item++){   CheckBox box = Repeater.Items[item].FindControl("CheckBoxID") as CheckBox;   if (box.Checked)   {      DoStuff();   }   else   {      DoOtherStuff();   }}