I have a repeater, which is bound on preRender with items. In the Item template each row has a check box. This works fine.
I'm trying to loop through all the checkboxes in the item template after it has been bound. Is there any way of doing this?
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.