我有一个Repeater控件,可以加载我构建的自定义控件的实例。这个转发器看起来像这样:
<asp:Repeater ID="myRepeater" runat="server" OnLoad="myRepeater_Load">
<HeaderTemplate>
<table border="0" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<tr><td><my:CustomControl ID="myControl" runat="server"
OnLoad="myControl_Load" />
</td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
我通过myRepeater_Load
事件处理程序绑定到Repeater。我的自定义控件用于在Repeater中呈现项目。因此,我试图在myControl_Load
事件处理程序中设置自定义控件的属性。但是,我不知道如何在myControl_Load
事件期间访问当前项目。
我可以在myControl_Load
事件期间传递当前项目或访问当前项目吗?如果是这样,怎么样?
谢谢,
答案 0 :(得分:3)
<asp:Repeater ID="rptrDemo" runat="server" OnItemDataBound="rptrDemo_ItemDataBound">
<ItemTemplate>
<demo:Sample runat="server" ID="sampleControl" />
</ItemTemplate>
</asp:Repeater>
protected void rptrDemo_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.DataItem != null)
{
SampleControl sampleControl = (SampleControl)e.Item.FindControl("sampleControl");
// do whatever
}
}
答案 1 :(得分:0)
您需要使用转发器ItemDatabound事件。
答案 2 :(得分:0)
使用Repeater的OnItemDatabound事件
void r_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CustomControl ctl = (CutonControl)e.Item.FindControl("myControl");
}
}