Button click event doesn't work properly

前端 未结 4 782
梦如初夏
梦如初夏 2020-12-22 02:43

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 \

相关标签:
4条回答
  • 2020-12-22 03:22

    The values of instance fields like counter are not saved across postbacks. You need to store counter in ViewState, Session, or some other persistent store, whichever is more appropriate. For example:

    private int Counter
    {
        get { return ((int?)this.ViewState["Counter"]).GetValueOrDefault(); }
        set { this.ViewState["Counter"] = value; }
    }
    

    Then reference this.Counter instead of counter in btnCompTagUpdate_Click.

    0 讨论(0)
  • 2020-12-22 03:23

    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.

    int counter = 0;     
    protected void btnCompTagUpdate_Click(object sender, EventArgs e) {     
    if (counter == 0)     { 
    counter = counter + 1;        
    label1.Text="First Time";             
    }    
     else if (counter == 1) {         
    counter = counter - 1;        
    label1.Text="Second Time";   
     }     
     } 
    
    0 讨论(0)
  • 2020-12-22 03:32

    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.

    0 讨论(0)
  • 2020-12-22 03:35
    void Page_Load(object sender, EventArgs e)
     {
       if (!IsPostBack)
         Session["counter"]=0;
     }
    

    You set the counter value at once, when first the page loads.

    protected void btnCompTagUpdate_Click(object sender, EventArgs e)
    {
     int counter=0;
    if (Session["counter"]!=null)
     counter= Convert.ToInt32(Session["counter"]);
      if (counter == 0)
      {
        lable1.Text="First Time";
        counter++;
       Session["counter"]=counter;
      }
     else if (counter == 1)
      {
        lable1.Text="Second Time";
        counter--;
       Session["counter"]=counter;
      }
    
    }
    
    0 讨论(0)
提交回复
热议问题