2010-04-09 4 views

Répondre

3

De votre page par défaut, essayez de trouver le TextBox en utilisant votre contrôle utilisateur.

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

Cette méthode peut très bien fonctionner, mais elle sent le temps. Vous avez des ID de zone de texte codés en dur. Vous ne vérifiez pas que le résultat est! = Null avant d'essayer d'accéder à ses propriétés. L'utilisation de FindControl est tellement plus lente et inefficace que de le faire de façon appropriée et d'exposer les propriétés sur le contrôle de l'utilisateur. – slugster

3

Si tel est le but du contrôle, puis créez une propriété publique sur votre contrôle utilisateur qui expose cette valeur, vous pouvez alors accéder qu'à partir de votre page:

string textBoxValue = myUserControl.GetTheValue; 
+0

Où myUserControl est ID de UserControl dans le balisage: ' – abatishchev

6

j'expose habituellement propriété texte de zone de texte derrière comme directement dans le code test.ascx ceci:

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

Ensuite, vous pouvez obtenir et définir que le code du champ de saisie de derrière default.aspx comme:

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

Comment accéder à la valeur d'une zone de texte à partir d'un usercontrol dans une page qui utilise ce usercontrol

étape 1: dans le contrôle de l'utilisateur crée un gestionnaire d'événements

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

2: dans la page appelez l'eventhandler

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; 
    } 
Questions connexes