在asp:ListView LayoutTemplate中设置控制值时出错
本文关键字:控制 出错 设置 asp ListView LayoutTemplate | 更新日期: 2023-09-27 18:22:44
所以我真的不确定我在这里做错了什么,但我的代码显然不起作用。我让我的列表视图做我需要的一切,除了当我使用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
工作得很好,我使用的数据(在我的代码库中的其他地方)在列表中迭代也很好,但一旦我在allRatesLink
控件上设置了任何属性,它就会给出对象引用未设置错误。对此有什么想法/帮助吗?
allRatesLink为null,因为找不到它,这会导致在尝试将属性设置为null时出现Object引用错误。
您需要在创建LayoutTemplate之后(例如在OnLayoutCreated处理程序中)或在DataBind()之后调用FindControl