2010-07-29 30 views
1

以下「FindControl」方法無法找到imgAd控件。任何想法爲什麼?它可能是包含它的表?該表的目的是將行排成行。中繼器控制。使用跨越行的表格

<asp:Content ID="Content3" ContentPlaceHolderID="phPageContent" runat="Server"> 
    <asp:Repeater ID="repBanner" runat="server"> 
     <HeaderTemplate> 
      <table> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <tr> 
       <td> 
        <asp:Image ID="imgAd" runat="server" AlternateText="Panda Visa" ImageUrl="Images/AffiliateBanners/125%20by%20125.jpg" /> 
       </td> 
       <td> 
        <asp:TextBox ID="txtHtml" runat="server" Columns="80" ReadOnly="True" Rows="7" TextMode="MultiLine"></asp:TextBox> 
       </td> 
       <td> 
        <asp:Button runat="server" Text="Copy HTML to Clipboard" OnClientClick="ClipBoard('txtHtml')" /> 
       </td> 
      </tr> 
     </ItemTemplate> 
     <FooterTemplate> 
      </table> 
     </FooterTemplate> 
    </asp:Repeater> 


Protected Sub repBanner_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repBanner.ItemDataBound 

    Dim CurrentAd As Ad = CType(e.Item.DataItem, Ad) 
    Dim RepeaterItem As RepeaterItem = e.Item 

    Dim imgAd As Image = CType(RepeaterItem.FindControl("imgAd"), Image) 
    imgAd.ImageUrl = "Images/" & "125 by 125.jpg" '<<<Error occurs here 

End Sub 

Object reference not set to an instance of an object. 

這裏的一些調試信息,我認爲可能會有幫助:

? RepeaterItem.Controls.Count 
1 
? RepeaterItem.Controls(0).Controls.Count 
0 
? typename(RepeaterItem.Controls(0)) 
"LiteralControl" 

回答

1

你需要檢查e.Item.ItemType,以確保您正在處理的項目,而不是一個頁眉或頁腳。類似這樣的:

Protected Sub repBanner_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repBanner.ItemDataBound 
    If (e.Item.ItemType <> ListItemType.Item AndAlso e.Item.ItemType <> ListItemType.AlternatingItem) Then 
     Return 
    End If 

    Dim CurrentAd As Ad = CType(e.Item.DataItem, Ad) 
    Dim RepeaterItem As RepeaterItem = e.Item 

    Dim imgAd As Image = CType(RepeaterItem.FindControl("imgAd"), Image) 
    imgAd.ImageUrl = "Images/" & "125 by 125.jpg" '<<<Error occurs here 

End Sub 
+0

我喜歡這個網站 – ChadD 2010-07-30 01:37:07