2010-04-09 16 views

Respuesta

3

Desde su página predeterminada intente encontrar el TextBox usando su control de usuario.

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

Este método puede funcionar, pero huele a lo grande. Tienes identificadores de cuadros de texto codificados. No está comprobando que el resultado sea! = Nulo antes de intentar acceder a sus propiedades. El uso de FindControl es mucho más lento e ineficiente que hacerlo de manera correcta y exponer las propiedades en el control del usuario. – slugster

3

Si este es el propósito del control, a continuación, crear una propiedad pública en el control de usuario que expone este valor, a continuación, puede acceder a que a partir de su página:

string textBoxValue = myUserControl.GetTheValue; 
+0

Donde 'myUserControl' es ID de UserControl en el marcado:' ' – abatishchev

6

lo general exponga el la propiedad del cuadro de texto texto directamente en test.ascx código detrás de la siguiente manera:

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

entonces se puede obtener y establecer que el cuadro de texto del código detrás de default.aspx como:

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

Cómo acceder al valor de un cuadro de texto de un control de usuario en una página que está utilizando este usercontrol

paso 1: en el control de usuario crea un controlador de eventos

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

2: en la página llame al manejador de eventos

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; 
    } 
Cuestiones relacionadas