2010-04-09 4 views
5

Привет Я создал пользовательский элемент управления с именем test.ascs с одним текстовым полем. Теперь я добавил этот элемент управления на странице default.aspx. Как я могу получить доступ к этому значению текстового поля с моей страницы default.aspx?Как получить доступ к значениям usercontrol со страницы?

есть ли шанс?

ответ

3

С вашей страницы по умолчанию попытайтесь найти TextBox, используя свой пользовательский элемент управления.

TextBox myTextBox = userControl.FindControl("YourTextBox") as TextBox; 
string text = myTextBox.text; 
+3

Этот метод может работать, но он пахнет большим временем. У вас есть текстовые коды жестко закодированы. Вы не проверяете, что результат равен! = Null, прежде чем пытаться получить доступ к его свойствам. Использование FindControl настолько медленнее и неэффективно, что делает его правильным способом OO и демонстрирует свойства пользовательского элемента управления. – slugster

3

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

string textBoxValue = myUserControl.GetTheValue; 
+0

Где 'myUserControl' является идентификатором UserControl в разметке:' ' – abatishchev

6

Я обычно разоблачать свойство текста TextBox непосредственно в test.ascx коде позади, как это:

public string Text 
{ 
    get { return txtBox1.Text; } 
    set { txtBox1.Text = value; } 
} 

Тогда вы можете получить и установить, что текстовое поле из кода позади default.aspx, как:

usrControl.Text = "something"; 
var text = usrControl.Text; 
2

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

шаг 1: в пользовательском элементе управления делает обработчик события

public event EventHandler evt; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     txtTest.Text = "text123"; 
     evt(this, e); 
    } 

2: в странице позвоните обработчику событий

protected void Page_Load(object sender, EventArgs e) 
    { 
     userCntrl.evt += new EventHandler(userCntrl_evt); 
    } 

void userCntrl_evt(object sender, EventArgs e) 
    { 
     TextBox txt = (TextBox)userCntrl.FindControl("txtTest"); 
     string s = txt.Text; 
    } 
Смежные вопросы