2017-01-25 73 views
0

我一直在嘗試使用ViewState對象來存儲點擊ImageButton的計數器。例如,如果ImageButton1是單擊它將存儲計數器== 1(或增量)在其中,如果另一個按鈕被點擊,計數器將變爲空。我嘗試單擊圖像按鈕,計數器變爲1然而,當我嘗試通過if else語句從提交按鈕檢索時,它不檢索任何東西,按鈕也無法工作。此外沒有錯誤消息已shown.I正在開發類似的座位選擇我project.Any幫助將不勝感激!。下面是代碼按鈕沒有得到ViewState值,也沒有顯示錯誤消息

protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 
    { 


     if (ImageButton1.ImageUrl != "~/Images/bed-occupied.png") 
     { 
      ImageButton1.ImageUrl = "~/Images/bed-occupied.png"; 

      if (ViewState["Counter"] == null) 
      { 
       counterBed1 = 1; 
       TextBoxClass.Text = counterBed1.ToString(); 
      } 
      else 
      { 
       counterBed1 = (int)ViewState["Counter"] + 1; 
      } 

      } 
     else 
     { 
      ImageButton1.ImageUrl = "~/Images/bed-unoccupied.png"; 
      ViewState["Counter"] = null; 

     } 

    } 


protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     ViewState["Counter"] = counterBed1; 
     // if(ViewState["Counter"] != null) 
     if(counterBed1 ==1) 
     { 



      Panel_ErrorMsg.Visible = true; 
      lb_ErrorMsg.Text = "Patient Successfully admitted to hospital"; 

     } 




     } 

回答

1

您遞增值以及設置搜索g局部變量,但請注意,您從不將值存回ViewState對象。

int counterBed1 = 0; 
if (ImageButton1.ImageUrl != "~/Images/bed-occupied.png") 
{ 
     ImageButton1.ImageUrl = "~/Images/bed-occupied.png"; 
     if (ViewState["Counter"] == null) 
     { 
      counterBed1 = 1; 
      TextBoxClass.Text = counterBed1.ToString(); 
      ViewState["Counter"] = counterBed1; // Add This 
     } 
     else 
     { 
      counterBed1 = (int)ViewState["Counter"] + 1; 
      ViewState["Counter"] = counterBed1; //Add This 
     } 
    } 
    else 
    { 
     ImageButton1.ImageUrl = "~/Images/bed-unoccupied.png"; 
     ViewState["Counter"] = null; 
    } 

另外,不要使用類變量,因爲它會爲每個新請求後重新初始化,使用本地變量而不是像這樣的提交按鈕處理程序: - 爲

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    int counterBed1 = Convert.ToInt32(ViewState["Counter"]); 
    // if(ViewState["Counter"] != null) 
    if(counterBed1 ==1) 
    { 
+0

您好,感謝現在所有的幫助,但是我可以問你是什麼意思,永遠不會將值存儲回viewState對象?當我嘗試點擊其他ImageButtons之前單擊imageButton1回來。計數器重置爲0並且不能再次遞增。 –

+0

@ GX-X - 這是因爲您正在將值存儲在全局變量中(在類級別定義),請按照提交按鈕單擊處理程序中的建議使用局部變量。 _我的意思是通過存儲back_是你有價值,但你需要將該值存儲在'ViewState'對象中以在第二次往返中取回。我強烈建議你閱讀關於編程和更多關於網絡的知識,而不是直接編寫代碼。 –

+1

我明白了,非常感謝您的建議。的確,我在這裏學到了一些新東西。 –