Установка текстового поля в пользовательском контроле со страницы - PullRequest
1 голос
/ 25 января 2011

У меня есть usercontrol, который содержит текстовое поле.Теперь я хочу добавить переменную в этот пользовательский элемент управления, давайте назовем его Text, который заполнит текстовое поле переданным значением. Я думал, что это можно сделать в «наборе» переменной в коде позади пользовательского элемента управления.

public string Text
{
    get {}
    set
    {
        txtBox.Text = value;
    }
}

txtBox - это идентификатор текстового поля в пользовательском контроле.Кто-нибудь знает, как это можно сделать?

Спасибо

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

1 Ответ

0 голосов
/ 25 января 2011

Если ваша проблема в том, что txtBox пусто, тогда я могу предложить вам следующее:

Если вы создаете пользовательский элемент управления динамически, не забудьте добавить его в дерево элементов управления страницы ДО (неявно или явно) доступа к его дочерним элементам управления. В противном случае все эти дочерние элементы управления останутся неинициализированными:

MyUserControl ctrl = (MyUserControl )Page.LoadControl("~/MyUserControl.ascx");
base.Controls.Add(ctrl);

ctrl.Text = "some value";

Если ваш пользовательский элемент управления объявлен в разметке страницы, не забудьте зарегистрироваться, используя директиву Register со свойством "Src", установленным в местоположение вашего пользовательского элемента управления:

<%@ Register TagPrefix="controls" TagName="MyUserControl" 
    Src="~/MyUserControl.ascx" %>

<controls:MyUserControl id="ctrl1" Text="some value" runat="server" />

Регистрация пользовательского элемента управления с использованием следующего метода НЕ БУДЕТ работать (не в случае, если все дочерние элементы управления создаются динамически. Но тогда вам не нужен пользовательский элемент управления - вам просто нужен класс, производный от Control класс):

<%-- Will not work for user controls --%>
<%@ Register Assembly="MyControlsAssembly.Shell" Namespace="MyControls" 
    TagPrefix="controls" %>

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...