2010-07-29 4 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

 Смежные вопросы

  • Нет связанных вопросов^_^