使用哪个事件来查找中继器中的控件

本文关键字:中继器 控件 查找 事件 | 更新日期: 2023-09-27 18:05:07

我使用asp.net和c#4。

我有一个中继器在HyperLink控制。

我需要找到HyperLink控件,并在渲染页面之前用一些逻辑改变它的一些属性。

与我的代码在这里张贴,我得到一个空值的控制,所以我不能得到它。

知道我做错了什么吗?谢谢你花时间来做这件事。

<asp:Repeater ID="RepeaterEditorsChoice" runat="server" DataSourceID="ObjectDataSourceEditorsChoice"
    OnItemCreated="RepeaterEditorsChoice_ItemCreated" OnItemDataBound="RepeaterEditorsChoice_ItemDataBound">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <li>
            <asp:HyperLink ID="uxLink" runat="server"></asp:HyperLink>
        </li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>

代码:

protected void RepeaterEditorsChoice_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
        {
            HyperLink myLink = (HyperLink)((Repeater)sender).FindControl("uxLInk"); // ERROR: it is null
            dynamic o = e.Item.DataItem;
            if (o.TypeContent == "AR")
            {
                myLink.Text = @"'<%# Eval('""Title'"") %>'";
                myLink.NavigateUrl = @"'<%# GetRouteUrl(""ArticleDetails"", new {ContentId = Eval(""ContentId""), TitleUrl = Eval(""TitleUrl"")}) %>'";
            }
            if (o.TypeContent == "BP")
            {
                myLink.Text = @"'<%# Eval('""Title'"") %>'";
                myLink.NavigateUrl = @"'<%# GetRouteUrl(""BlogPostDetails"", new {ContentId = Eval(""ContentId""), TitleUrl = Eval(""TitleUrl"")}) %>'";
            }
        }
    }

使用哪个事件来查找中继器中的控件

关于项目数据绑定

然后是(YourClass)e.Item.FindControl("its name");