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

相关问题