2010-04-09 14 views

Odpowiedz

3

Z domyślnej strony spróbuj znaleźć TextBox za pomocą kontrolki użytkownika.

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

Ta metoda może dobrze działać, ale pachnie wielki czas. Masz identyfikatory pola tekstowego zakodowane na stałe. Nie sprawdzasz, czy wynik jest! = Null przed próbą uzyskania dostępu do jego właściwości. Używanie FindControl jest o wiele wolniejsze i nieefektywne niż robienie tego we właściwy sposób w stylu OO i eksponowanie właściwości na kontroli użytkownika. – slugster

3

Jeśli taki jest cel kontroli, a następnie utworzyć własność publiczną na twoją kontrolą użytkownika, który udostępnia tę wartość, można następnie przejść, które ze swojej strony:

string textBoxValue = myUserControl.GetTheValue; 
+0

Gdzie 'myUserControl' jest identyfikatorem UserControl w znacznikach:' ' – abatishchev

6

zwykle wystawiać nieruchomość tekstowym za tekst bezpośrednio w test.ascx kodu za tak:

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

Następnie można pobrać i ustawić to pole tekstowe z kodu tyłu z default.aspx jak:

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

Jak uzyskać dostęp do wartości pola tekstowego z usercontrol na stronie, która używa tego usercontrol

krok 1: kontrolę użytkownika sprawiają, obsługi zdarzeń

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

2: na stronie wywołanie zdarzenia

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; 
    } 
Powiązane problemy