在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控件上设置了任何属性,它就会给出对象引用未设置错误。对此有什么想法/帮助吗?

在asp:ListView LayoutTemplate中设置控制值时出错

allRatesLink为null,因为找不到它,这会导致在尝试将属性设置为null时出现Object引用错误。

您需要在创建LayoutTemplate之后(例如在OnLayoutCreated处理程序中)或在DataBind()之后调用FindControl