Ошибка ListView FindControl

У меня следующая ошибка:

System.NullReferenceException - Ссылка на объект не установлена ​​на экземпляр объекта.

К следующему коду:

<asp:ListView ID="LV1"  runat="server" DataSourceID="LinqDataSource">
  <ItemTemplate>
     <asp:Image ID="Image1" Width="100px" Height="100px" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' />
     //....and so on till the 
</asp:ListView>

Код - сзади:

protected void checkTheImage()
{
    ((Image)LV1.FindControl("Image1")).ImageUrl = "(noImage.jpg)" ;
}

и код на page_load:

protected void Page_Load(object sender, EventArgs e)
{
    checkTheImage();
}

Почему я получил ошибку? что не так в моем коде?

1 ответ

Решение

Вы должны указать пункт:

protected void checkTheImage()
{
    ((Image)LV1.Items[0].FindControl("Image1")).ImageUrl = "(noImage.jpg)" ;
}

потому что ListView визуализирует элемент управления Image1 для каждого дочернего элемента. Чтобы изменить все изображения:

protected void checkTheImage()
{
   foreach(ListViewItem item in LV1.Items)
      ((Image)item.FindControl("Image1")).ImageUrl = "(noImage.jpg)" ;
}
Другие вопросы по тегам