2012-01-18 62 views
1

我試圖在我的中繼器裏找到<span id="source"> listControl將返回null。如何在asp中繼器內找到嵌套控件

<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; 
} 
+1

「不工作」是什麼意思?錯誤?例外?還有別的嗎? – Oded 2012-01-18 14:30:57

+0

什麼是ShowSource? – Brissles 2012-01-18 14:36:23

+0

@Brissles - 看起來像一個布爾屬性,用於確定「span」是否可見。 – Oded 2012-01-18 14:37:12

回答

3

您需要檢查您是否檢查ListItemType.Item或AlternatingItem類型中的List Item。

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; 
      } 
     } 
    } 
+0

I '從HtmlGenericControl listControl =(HtmlGenericControl)e.Item.FindControl(「socialListItem」);'獲取'HttpException''在InnerText - 無法獲取socialListItem的內部內容,因爲內容不是字面的 – bflemi3 2012-01-18 15:07:56

+0

您試過InnerHtml嗎? – Lloyd 2012-01-18 15:10:31

+0

對不起,你是什麼意思我嘗試InnerHtml? – bflemi3 2012-01-18 15:14:38

相關問題