在模板化的usercontrol中查找子控件

时间:2011-12-15 20:47:11

标签: c# asp.net ektron

    <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");

我得到一个“对象未设置为对象的实例”错误。

当您无权访问模板化控件的源时,如何在模板化用户控件中设置子控件的值?

3 个答案:

答案 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

相关问题