2012-01-18 40 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

+0

ShowSourceとは何ですか? – Brissles

+0

@Brissles - 'span'を表示するかどうかを判断するために使用するbooleanプロパティのように見えます。 – Oded

答えて

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

HtmlGenericControlからHttpExceptionを取得していますlistControl =(HtmlGenericControl)e.Item.FindControl( "socialListItem"); on InnerText - コンテンツがリテラルでないためsocialListItemの内部コンテンツを取得できません – bflemi3

+0

InnerHtmlを試しましたか? – Lloyd

+0

申し訳ありませんが、私はInnerHtmlを試しましたか? – bflemi3

関連する問題