Как найти элемент управления в отдельном пользовательском элементе управления на той же странице, где он зарегистрирован - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть два пользовательских элемента управления, в одном из которых у меня есть текстовое поле, мне нужно получить его значение из второго пользовательского элемента управления, который зарегистрирован на той же странице. Как я могу это сделать? Я знаю, что следующая строка неверна ... но я помню, что это было что-то вроде этого.

TextBox myText = (TextBox)FindControl["mycontrol"] as TextBox;

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Если вам нужно получить доступ к значению второго элемента управления из первого элемента управления

var textBox = this.Page.FindControl("SecondUserControl")
                  .FindControl("tbCardNumber") as TextBox;

Где SecondUserControl - это идентификатор, указанный на странице, а tbCardNumber - это идентификатор, указанный для TextBox во втором элементе управления

.

Если вы пытаетесь получить доступ к TextBox со страницы

var textBox = SecondUserControl1.FindControl("SecondUserControl")
                                .FindControl("tbCardNumber") as TextBox;

Где SecondUserControl1 - это идентификатор элемента управления, и вы можете получить к нему доступ в коде позади.

Однако вы можете выставить значение текстового поля через свойство

public string TextBoxValue
{
   get
    {
        return tbCardNumber.Text;
    }
}

Но вам все равно нужен метод FindControl, если вы обращаетесь к нему через другой пользовательский элемент управления

1 голос
/ 03 апреля 2012

Код, который у вас есть, должен работать, за исключением случаев, когда у вас слишком много приведений

TextBox myText = FindControl["mycontrol"] as TextBox;

Документация MSDN по FindControl , которая возвращает Control, который является базовым классом текстовое поле , поэтому это приведение должно работать до тех пор, пока найденный элемент управления является текстовым полем

...