Ошибка 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)" ;
}