繁体   English   中英

按钮点击事件无法正常运行

[英]Button click event doesn't work properly

下面的代码处理按钮单击事件。 用户第一次单击时,将标签设置为“第一次”,而用户第二次单击时,将标签设置为“第二时间”。 但是它不能正常工作。 当我第一次单击它时,它会将标签设置为“第一次”,这是正确的,但是当我第二次单击时,什么也没有发生。

我的代码:

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

    }

我该如何解决?

实例字段(如counter的值不会在回发之间保存。 您需要将counter存储在ViewStateSession或其他持久存储中,以较合适的一个为准。 例如:

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

然后参考this.Counter代替counterbtnCompTagUpdate_Click

如果完全按照您列出的方式初始化“ Coutner”,那么这就是您的问题。 每次回发后,Coutner都会重新初始化为零。 您需要保存Coutner的状态-通常,除了最简单的情况外,我建议不要使用它,但是我认为您有使用ViewState的有效情况。

void Page_Load(object sender, EventArgs e)
 {
   if (!IsPostBack)
     Session["counter"]=0;
 }

第一次加载页面时,您可以立即设置计数器值。

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

}

您只需要更改方法中增加计数器的方式。 单击按钮后,您没有将其另存为新变量。

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";   
 }     
 } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM