Ответ 1
Мне кажется, что вы хотите использовать событие ItemDataBound.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx
Вам нужно будет проверить ItemType для RepeaterItem, чтобы вы не пытались найти этот флажок в разделе Заголовок/Нижний колонтитул/Сеператор/Пейджер/Редактировать
Ваше событие будет выглядеть примерно так:
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;
}
}
Это событие можно повысить, добавив событие в свой код так:
rptItems.ItemDataBound += new RepeaterItemEventHandler(rptItems_ItemDataBound);
Или добавив его в элемент управления на клиенте:
onitemdatabound="rptItems_ItemDataBound"
В качестве альтернативы вы можете сделать так, как предлагали другие, и перебирать по RepeaterItems, однако вам все равно нужно проверить тип элемента.
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;
}
}
Вы хотели бы сделать это в Page PreRender, после того как ретранслятор был связан.