2 Stimmen

Wie man ein verschachteltes Steuerelement innerhalb von Asp Repeater finden

Ich versuche zu finden <span id="source"> In meinem Repeater wird das listControl mit Null zurückgegeben.

<asp:Repeater id="rptRssFeed" runat="server" OnItemDataBound="RssFeedItemDataBound">
    <HeaderTemplate><ul></HeaderTemplate>
    <FooterTemplate></ul></FooterTemplate>
    <ItemTemplate>
        <li id="socialListItem" runat="server">
            <a href="<%# GetNavigationLink(Container.DataItem) %>" target="_blank" id="title" runat="server"><%# GetTitle(Container.DataItem) %></a>
            <span class="source" id="source" runat="server"><%# GetSource(Container.DataItem) %></span>
            <p><%# GetTeaser(Container.DataItem) %></p>
        </li>
    </ItemTemplate>
    <AlternatingItemTemplate>
        <li class="alt" id="socialListItem" runat="server">
            <a href="<%# GetNavigationLink(Container.DataItem) %>" target="_blank" id="title" runat="server"><%# GetTitle(Container.DataItem) %></a>
            <span class="source" id="source" runat="server"><%# GetSource(Container.DataItem) %></span>
            <p><%# GetTeaser(Container.DataItem) %></p>
        </li>
    </AlternatingItemTemplate>
</asp:Repeater>

public void RssFeedItemDataBound(object sender, RepeaterItemEventArgs e)
{
    HtmlGenericControl listControl = (HtmlGenericControl)e.Item.FindControl("socialListItem");
    if (!ShowSource)
    {
        HtmlGenericControl spanControl = (HtmlGenericControl)listControl.FindControl("source");
        spanControl.Visible = false;
    }
    listControl.Attributes["class"] += ((XmlFeedItem)e.Item.DataItem).XmlFeedType;
}

4voto

Lloyd Punkte 2882

Sie müssen prüfen, ob Sie nach dem Listenelement im Typ ListItemType.Item oder AlternatingItem suchen.

public void RssFeedItemDataBound(object sender, RepeaterItemEventArgs e)
    {

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {

            HtmlGenericControl listControl = (HtmlGenericControl)e.Item.FindControl("socialListItem");

            if (listControl != null)
            {
                if (!ShowSource)
                {
                    HtmlGenericControl spanControl = (HtmlGenericControl)listControl.FindControl("source");
                    spanControl.Visible = false;
                }

                listControl.Attributes["class"] += ((XmlFeedItem)e.Item.DataItem).XmlFeedType;
            }
        }
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X