This following code handle button click event. When the user click first time it sets the lable as "First Time", and when the user click second time it sets the lable as "Second Time". But it doesn't work properly. When I first click it, it sets the lable as "First time", which is correct, but when I click second time, nothing happend.
My code:
int counter=0;
protected void btnCompTagUpdate_Click(object sender, EventArgs e)
{
if (counter == 0)
{
lable1.Text="First Time";
counter++;
}
else if (counter == 1)
{
lable1.Text="Second Time";
counter--;
}
}
How can I fix it?
You only need to change the way you increase the counter in the method. You are not saving it back as a new variable after the button click.
The values of instance fields like
counter
are not saved across postbacks. You need to storecounter
inViewState
,Session
, or some other persistent store, whichever is more appropriate. For example:Then reference
this.Counter
instead ofcounter
inbtnCompTagUpdate_Click
.You set the counter value at once, when first the page loads.
If "Coutner" is initialized exactly in the way you are listing, then that's your problem. Coutner gets re-initialized to zero after every postback. You need to save Coutner's state -- I normally recommend against it for any but the simplest cases, but I think you have a valid case for the use of ViewState.