所以我真的不确定我在这里做错了什么,但我的代码显然不起作用。我有我的列表视图做我需要的一切,除了当我使用ListView.FindControl()
方法,然后在该控件上设置属性时,它给我一个Object reference not set to an instance of an object.
错误。这是我的代码:
ASPX
<p class="rates-title"><span>
<asp:Literal ID="currentDate" runat="server"></asp:Literal></span><br>
Todays Rates</p>
<span class="rates-arrow sprite"></span>
<asp:ListView ID="RatesList" ItemPlaceholderID="RSSPlaceholder" runat="server">
<LayoutTemplate>
<ul>
<asp:PlaceHolder ID="RSSPlaceholder" runat="server"></asp:PlaceHolder>
<li>
<asp:HyperLink ID="AllRatesLink" CssClass="all-rates" runat="server">
View All Rates<span></span>
</asp:HyperLink>
</li>
</ul>
</LayoutTemplate>
<ItemTemplate>
<li>
<div class="rate-text">
<p><%# Eval("Name") %></p>
<div class="rate">
<p><%# Eval("InitialRate") %>%</p>
</div>
</div>
<%# Eval("Apr") %>
<a href="#rates-box-<%# Eval("Id") %>" class="todays-rates-click-side sprite"></a>
<div class="todays-rates-rollover">
<p><%# Eval("ContentTruncated") %></p>
</div>
</li>
</ItemTemplate>
</asp:ListView>
背后的代码
currentDate.Text = DateTime.Now.ToString("MM.dd.yy");
HyperLink allRatesLink = (HyperLink)RatesList.FindControl("AllRatesLink");
allRatesLink.Text = "hello";
所以奇怪的是currentDate
工作得很好,我使用的数据(我的代码隐藏中的其他地方)可以很好地迭代列表,但是只要我在{{{ 1}}控制,它给对象引用没有设置错误。关于这个的任何想法/帮助?
答案 0 :(得分:3)
allRatesLink为null,因为在尝试设置null属性时未找到导致Object引用错误的内容。
在创建LayoutTemplate之后需要调用FindControl,例如在OnLayoutCreated处理程序中或在DataBind()之后