2009-09-28 3 views
3

Я использую C# .NETUserControl - доступ к текстовое поле внутри UserControl в веб-форме

У меня есть разные взгляды в моем веб-формы, все они обычно проявляют различную информацию для трех текстовых полей (прилет/видели/время Вылет) за исключением. Чтобы попытаться сократить код, я создал UserControl, который содержит эти три текстовых поля.

Я ссылался на UserControl в верхней части моей веб-формы, а также в каждом представлении.

<%@Register TagPrefix="uc1" TagName="userTimes" Src="~/usercontrols/userTimes.ascx"%> 
<uc1:userTimes id="userAppointmentTimes" runat="server"></uc2:userTimes> 

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

Кроме того, каждый текстовое поле имеет два Validation управления:

  1. Во-первых убеждается это во времени формате HH: MM
  2. Второй убеждается прибытие перед убеждались и т.д.

Мои два вопроса:

  1. Как с нами связаться s UserControl от код позади? Я прочитал, что мне нужно использовать FindControl, но я не знаю, почему, когда знаю , что он называется.
  2. Я беру на себя проверку (на стороне сервера) в коде UserControl или код веб-формы позади?

Заранее благодарим за любую помощь.

Clare

ответ

3

1.) Вы можете получить доступ к пользовательскому элементу управления по его ID из кода страницы позади - userAppointmentTimes в вашем случае. Чтобы получить доступ к вашим текстовым полям в веб-форме, вам необходимо использовать метод FindControl на уровне User Control. Так должно работать что-то вроде userAppointmentTimes.FindControl («WhateverTextBoxID»). Конечно, вам нужно направить результат в TextBox.

Вы не можете получить доступ к текстовым полям, потому что ASP.Net автоматически не раскрывает их для вас. Таким образом, вы можете предоставить общедоступные свойства для установки/получения значений в/из ваших текстовых полей внутри вашего пользовательского элемента управления.

Внутри пользовательского элемента управления вы можете получить доступ к своим текстовым полям по их идентификаторам.

2.) Поместите контрольные элементы управления в свой пользовательский элемент управления.

С помощью веб-формы вы подразумеваете, что все это внутри формы-формы asp.net или у вас есть форма asp.net, например FormView, внутри которой внутри? Если последнее верно, вам нужно использовать FindControl на уровне FormView - formView.FindControl ("userAppointmentTimes"). В противном случае пользовательский элемент управления доступен с уровня страницы через его идентификатор.

Смежные вопросы