2013-04-24 5 views
0

Как правило, мы делаем это, чтобы получить значение текстового поля, находящегося внутри пользовательского элемента управления.Как получить значение TextBox (добавлено программно), которое находится внутри пользовательского элемента управления (пользовательский элемент управления, обработанный внутри Repeater)

<asp:TextBox runat="server" Text="Test" ID="txtTest"/> 

В коде позади создать свойство

public string MyString 
    { 
    get { return txtTest.Text; } 
    } 

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

foreach (RepeaterItem itm in rptAttribute.Items) 
{  
MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName")); 
string test = uc.MyString; 
} 

, но не уверен, как для визуализации значения, если текстовое поле в пользовательском элементе управления создано программно.

+0

Вы можете определить идентификатор текстового поля, который вы ищете, и вы создаете динамические текстовые поля во время обработчика событий Page_Init? – bUKaneer

+0

Я дал id прагматично, объявляя текстовое поле в методе page_init. – Rajesh

+0

В принципе, у вас есть динамически созданный MyUserControls внутри Repeater и динамически созданный TextBox внутри MyUserControl. Если да, то как вы динамически создаете TextBox внутри UserControl? – Win

ответ

0

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

В вашем ASCX:

public TextBox GetDynamicTextBoxByID(string textBoxId) 
{ 
    return (TextBox)Page.FindControl(textBoxId); 
} 

В ваша Родительская страница:

foreach (RepeaterItem itm in rptAttribute.Items) 
{  
MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName")); 
string test = uc.MyString; 
TextBox tx = uc.GetDynamicTextBoxByID(idOfTextBox); 
} 

Не забудьте проверить, нет ли верности и правильной обработки.

+0

TextBox tx = uc.GetDynamicTextBoxByID (idOfTextBox); работает для имени элемента управления, но не работает с идентификатором элемента управления. – Rajesh

+0

Хммм интересно - не могли бы вы опубликовать свой рабочий код (добавить его в свой вопрос)? Спасибо, что согласились в любом случае! Честно говоря, вы уже сделали всю тяжелую часть: o) – bUKaneer