<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");
我得到一个“对象未设置为对象的实例”错误。
当您无权访问模板化控件的源时,如何在模板化用户控件中设置子控件的值?
答案 0 :(得分:0)
如果您无权访问控件的来源,则必须通过他们为您设计的机制访问该控件。检查文档以查看它们所暴露的内容。
答案 1 :(得分:0)
控制器在Page_Load中绑定其数据,因此您只能访问其控件。此外,您不必使用FindControl,因为可以直接访问子控件。所以这对你有用:
protected void Page_PreRender(object sender, EventArgs e)
{
Literal1.Text = "Hello, World";
}
答案 2 :(得分:0)
让标签调用函数来获取文本,而不是写入文字。 在模板内部,您可以调用函数来获取数据绑定期间所需的文本。
搜索&lt;%#GetLabelText()%&gt;
您将定义GetLabelText()函数。
这里有一些文档Ektron 8.5 SearchView