2011-12-15 102 views
1
<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文本設置文本(它基於另一種方法進行更改)。當我嘗試使用在模板usercontrol中查找子控件

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

我得到一個「對象未設置爲對象的實例」錯誤。

當您無法訪問模板化控件的源時,如何在模板化用戶控件內設置子控件的值?

+0

你得到的異常,當你調用.FindControl(),或者當您嘗試使用「L」? – n8wrl 2011-12-15 21:00:46

+0

我嘗試調用FindControl時出現異常。 – Tim 2011-12-16 12:54:34

回答

0

控制器在Page_Load中綁定其數據,因此您只能在其後訪問其控件。此外,您不必使用FindControl,因爲子控件可以直接訪問。所以這將爲你工作:

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

如果您無權訪問控件的來源,則必須通過他們爲您設計的機制訪問該控件。檢查文檔以查看它們公開的內容。

+0

這是一個用於網站搜索的Ektron模板化用戶控件。 – Tim 2011-12-15 20:50:56

0

而不是寫入文字,讓標籤調用函數來獲取其文本。 在模板內部,您可以調用函數來獲取數據綁定期間所需的文本。

搜索<%#將對getLabelText()%>

你會定義將對getLabelText()函數。

有一些文檔,這裏Ektron 8.5 SearchView