簡體   English   中英

中繼器使用哪個事件來查找中繼器內的控件

[英]Repeater which Event to use to find a control inside the repeater

我使用 asp.net 和 c#4。

我在HyperLink控件內有一個中繼器。

在頁面上呈現之前,我需要找到HyperLink控件並使用一些邏輯更改它的一些屬性。

在這里發布我的代碼后,我得到了控件的 null 值,所以我無法得到它。

知道我做錯了什么嗎? 感謝您在這方面的時間。

<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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM