2012-12-11 11 views
7

ho una tale paginaOttenere valore attuale TextBox testo in un pulsante evento onClick - asp.net

<form runat="server" id="NewForm"> 
    Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox> 
    <asp:Button ID="AddNewName" runat="server" Text="Add" OnClick="AddNewName_Click" /> 
    <asp:Label ID="NewName" runat="server"></asp:Label> 
</form> 

nel codice dietro, ho un Page_Load che assegnano un valore al nome TextBox.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Name.Text = "Enter Your Name Here"; 
} 

Poi sul Fare clic sul pulsante AddNewName, la scriverò nel Label NewName

protected void AddNewDivision_Click(object sender, EventArgs e) 
{ 
    NewName.Text = Name.Text; 
} 

Ma, non importa quello che ho di ingresso nel Nome TextBox, Label visualizza solo "Inserisci il tuo Nome qui ". Non si aggiorna mai al contenuto effettivo nel TextBox del nome. Cosa sto sbagliando con questo codice?

risposta

16

Il problema è che si sovrascrive sempre il valore modificato in Page_Load. Al contrario, controllare la proprietà IsPostBack:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
     Name.Text = "Enter Your Name Here"; 
} 
+1

Awesone !!!!! Questo è esattamente ciò che ha risolto il mio problema. Grazie mille Tim. –

2

Tu sei re-assigning il testo per nome ogni volta Page_Load che scrive sopra il testo immesso nella casella di testo prima di raggiungere AddNewDivision_Click evento. Per assegnarlo una volta a caricamento pagina e non scrivere oltre le chiamate successive è possibile utilizzare la proprietà Page.IsPostBack.

if(!Page.IsPostBack) 
     Name.Text = "Enter Your Name Here"; 

Oppure si può assegnare il testo in disegno html e remove il statement da page_load

<asp:TextBox ID="Name" runat="server" Text="Enter Your Name Here"></asp:TextBox> 
+0

Grazie per la tua risposta Adil! –

+0

Prego. – Adil

+0

Vorrei poter selezionare entrambe le tue risposte. Ma Tim è stata la prima risposta e la sua risposta ha risolto questo problema. Scusa Adil. Ma ho votato anche per il tuo. –

0

Un altro problema immediatamente evidente è:

<form runat="server" id="NewForm"> 
    Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox> 
    <asp:Button ID="AddNewName" runat="server" Text="Add" **OnClick="AddNewName_Click"** /> 
    <asp:Label ID="NewName" runat="server"></asp:Label> 
</form> 

Non gli asterischi sopra. Quindi, ti stavi chiedendo perché questo non è stato eseguito:

protected void **AddNewDivision_Click**(object sender, EventArgs e) 
{ 
    NewName.Text = Name.Text; 
} 

Ancora, notare gli asterischi. Non stavi chiamando il vuoto corretto, in effetti probabilmente stavi chiamando un vuoto che non esisteva nemmeno.