簡體   English   中英

在模板用戶控件中查找子控件

[英]Finding a child control inside a templated usercontrol

    <cc1:SiteSearchInputView ID="ssInputView" ControllerID="ssController" runat="server">
    <ItemTemplate>
        <table border="0" cellspacing="0" cellpadding="0">
              <tr>
            <td><label>Search <asp:Literal ID="litSite" runat="server" /></label></td>
            <td><asp:TextBox ID="tbSearchText" runat="server" /></td>
            <td><asp:Button ID="btnSearch" CssClass="searchBTN" runat="server" /></td>
          </tr>
            </table>
    </ItemTemplate>
</cc1:SiteSearchInputView>

我需要能夠在運行時設置litSite文字的文本(它會根據另一種方法更改)。 當我嘗試使用

Literal l = (Literal) ssInputView.FindControl("litSite");

我收到“對象未設置為對象實例”的錯誤。

當您無權訪問模板控件的源時,如何在子控件中設置子控件的值?

如果您無權訪問控件的源,則必須通過它們為您設計的機制來訪問控件。 檢查文檔以了解它們所包含的內容。

控制器將其數據綁定到Page_Load中,因此您之后只能訪問其控件。 另外,您不必使用FindControl,因為可以直接訪問子控件。 因此,這將為您工作:

protected void Page_PreRender(object sender, EventArgs e)
{
    Literal1.Text = "Hello, World";
}

代替寫文字,讓標簽調用一個函數來獲取其文本。 在模板內部,您可以調用函數以獲取數據綁定期間所需的文本。

搜索<%#GetLabelText()%>

您將定義GetLabelText()函數。

這里有一些文檔Ektron 8.5 SearchView

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM