ListView FindControl错误

时间:2011-09-08 07:30:37

标签: c# asp.net 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 个答案:

答案 0 :(得分:2)

您必须指定项目:

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)" ;
}