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