我有一个错误:ListView控件的FindControl错误
System.NullReferenceException – Object reference not set to an instance of an object.
为了下一个代码:
<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();
}
为什么我得到错误?我的代码有什么问题?
我的猜测是,当您调用checkTheImage()时(即太早),ListView数据绑定实际上并未发生。您可以通过使用稍后在Page生命周期中发生的事件(如Page_PreRender)来快速测试此事件。编辑:第二个想法,这可能还为时过早,而是尝试处理ListView.Databound事件,并尝试在那里你的代码。 –
我同意丹尼尔B.你应该阅读[this](http://msdn.microsoft.com/en-us/library/ms178472.aspx#data_binding_events_for_databound_controls) – luviktor
当我写Page_PreRender时,问题解决了。太好了!谢谢 – Oshrib