2012-12-11 14 views
7

mam taką stronęPobierz aktualną wartość TextBox Text w przycisku zdarzenia 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> 

W kodzie tyłu, mam Page_Load które przypisać wartość do nazwy tekstowym.

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

Następnie po kliknąć w przycisk AddNewName będę pisać na etykiecie NewName

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

Jednak, bez względu na to, co wejście w imię TextBox, Label wyświetla tylko „Wpisz swoje Name Here ". Nigdy nie aktualizuje rzeczywistej zawartości w polu tekstowym Nazwa. Co robię źle z tym kodem?

Odpowiedz

16

Problem polega na tym, że zawsze zastępujesz zmienioną wartość w Page_Load. Zamiast sprawdzić właściwość IsPostBack:

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

Awesone !!!!! Właśnie to rozwiązało mój problem. Dziękuję bardzo Tim. –

2

Jesteś re-assigning tekst do Imię każdym razem Page_Load że ponad pisze tekst wprowadzony w pole tekstowe zanim osiągnie AddNewDivision_Click wydarzenie. Aby przypisać go po załadowaniu strony i nie należy zapisywać kolejnych wywołań, można użyć właściwości Page.IsPostBack.

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

Albo można przypisać tekst w html projektowania i removestatement z page_load

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

Dziękuję za odpowiedź Adil! –

+0

Nie ma za co. – Adil

+0

Chciałbym móc wybrać obie twoje odpowiedzi. Ale Tim był pierwszą odpowiedzią, a jego odpowiedź rozwiązała ten problem. Przepraszam Adil. Ale głosowałem też za twoim. –

0

Inną kwestią jest oczywiste:

<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> 

Nie gwiazdkami powyżej. Następnie zastanawiałeś się, dlaczego to się nie udało:

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

Ponownie zanotuj gwiazdkę. Nie powoływałeś się na właściwą pustkę, w rzeczywistości prawdopodobnie nazywałeś pustkę, która nawet nie istniała.

Powiązane problemy