<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<li class="closed" >
<asp:HyperLink runat="server" CssClass="toggler off"
ImageUrl="/_layouts/images/NEXT.GIF"
Text="<%#Container.DataItem%>" ID="HyperLink1">
</asp:HyperLink>
</li>
</ItemTemplate>
</asp:Repeater>
我想从arraylist
中获取超链接中的文本在我的ascx代码中
我试图通过显示错误
来做到这一点 HyperLink hypl = (HyperLink)Repeater1.FindControl("HyperLink1");
hypl.Text = ar.ToString();
hypl.NavigateUrl = "http//www.yahoo.com";
任何人都知道如何解决此问题
答案 0 :(得分:3)
使用转发器控件,您无法使用FindControl按名称查找超链接,因为可以有多个(这是一个模板,它会呈现0到n次)。
您需要多次为超链接分配值,每次绑定一个项目。这是转发器的ItemDataBound事件的工作。尝试这样的事情:
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<li class="closed" >
<asp:HyperLink runat="server" CssClass="toggler off"
ImageUrl="/_layouts/images/NEXT.GIF"
Text="<%#Container.DataItem%>" ID="HyperLink1">
</asp:HyperLink>
</li>
</ItemTemplate>
</asp:Repeater>
然后你需要处理这样的事件:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
HyperLink hypl = (HyperLink)e.Item.FindControl("HyperLink1");
hypl.Text = ar.ToString();
hypl.NavigateUrl = "http//www.yahoo.com";
}