Поиск дочернего элемента управления в шаблонном пользовательском контроле - PullRequest
1 голос
/ 16 декабря 2011
    <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 голосов
/ 16 декабря 2011

Контроллер связывает свои данные в Page_Load, так что вы можете получить доступ к его элементам управления только после. Кроме того, вам не нужно использовать FindControl, потому что дочерние элементы управления доступны напрямую. Так что это будет работать для вас:

protected void Page_PreRender(object sender, EventArgs e)
{
    Literal1.Text = "Hello, World";
}
0 голосов
/ 18 декабря 2011

Вместо записи в литерал, пусть метка вызывает функцию, чтобы получить ее текст. Внутри вашего шаблона вы можете вызвать функцию, чтобы получить текст, который вы хотите во время привязки данных.

Поиск <% # GetLabelText ()%>

Вы бы определили функцию GetLabelText ().

Здесь есть некоторая документация Ektron 8.5 SearchView

0 голосов
/ 16 декабря 2011

Если у вас нет доступа к источнику элемента управления, вы должны получить доступ к элементу управления с помощью механизмов, которые они разработали для вас.Проверьте документацию, чтобы увидеть, что они выставляют.

...