我有一个转发器,它与项目绑定在preRender上.在项目模板中,每行都有一个复选框.这个很好用.
在绑定项模板之后,我try 遍历项模板中的所有复选框.有什么办法可以做到这一点吗?
我有一个转发器,它与项目绑定在preRender上.在项目模板中,每行都有一个复选框.这个很好用.
在绑定项模板之后,我try 遍历项模板中的所有复选框.有什么办法可以做到这一点吗?
听起来你想使用ItemDataBound事件.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx
您需要判断RepeaterItem的ItemType,这样就不会试图在页眉/页脚/分隔符/pager /编辑中找到复选框
你的活动可以大致如下:
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上进行迭代,但是仍然需要判断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;
}
}
你会想要在Page PreRender米中这样做,在转发器被绑定之后.