2017-07-06 280 views
0

我對VB.NET來說是相當新的。我覺得我做了很難的部分,並與簡單的部分拼搏!我在來這裏之前搜索了它,但仍然掙扎着。單擊事件按鈕5次點擊後禁用按鈕

基本上我有一個下拉列表中的所有可用的治療方法和按鈕旁邊(添加治療)。每次我從列表中選擇治療時,我點擊按鈕,然後添加它並將其綁定到gridview,唯一的問題是我希望用戶能夠添加多達5種治療方法,然後禁用按鈕。這個問題我怎麼能說找到點擊按鈕的次數,然後我想我可以把If語句,我不知道如何找到按鈕被點擊的次數的值。

Dim availableTreatment As ListItem = New ListItem 
    Dim count As Integer = 0 
    For count = 0 To 4 
     If count <= 4 And btnavailableTreatment (button clicked value is what should go here) Then 
      availableTreatment = DDTreatmentList.SelectedItem 
      c.name = availableTreatment.Value 
      saveTreatment(c) 
      gvavailableTreatment.DataSource = getTreatment(c.name) 
      gvavailableTreatment.DataBind() 

     Else 
      btnavailableTreatment.Enabled = False 
     End If 
     count = count + 1 
    Next 
+0

如果該代碼在'Button_Click'事件中,那麼在按下該按鈕時計數器將被重置爲0。嘗試移動Button_Click外部的計數器。 –

+0

@DaveB簡單地將它移到外面也不會修復它。頁面類的實例丟失,然後在每次回發時重新創建。他需要將數據存儲在表單中,例如ViewState或隱藏字段。 – mason

+0

梅森,她*。我會試着將它存儲在隱藏的領域,看看它是如何發展的!乾杯 – Sam

回答

0

此標記添加到您的網頁:

<asp:HiddenField id="NumberOfTimesClickedHiddenField" 
       value="0" 
       runat="server"/> 

添加到您的按鈕單擊處理

'get previous value 
Dim numberOfTimesClicked = Integer.Parse(NumberOfTimesClickedHiddenField.Value) 

'increment value 
numberOfTimesClicked += 1 

'store new value 
NumberOfTimesClickedHiddenField.Value = numberOfTimesClicked.ToString() 

If numberOfTimesClicked >= 5 Then 
    btnavailableTreatment.Enabled = False 
End If 

現在的價值將在頁面的表單中的數據持久化。

我原本是用C#寫的,我不是VB.NET程序員,所以我用翻譯器來轉換它。可能有語法錯誤,但一般流程應該是正確的。

+0

我認爲你會工作,但我堅持增加隱藏字段的值。這是拋出一個錯誤! – Sam

+0

@Sam什麼是錯誤? – mason

+0

對於增量值:它說你不能將Double轉換爲隱藏字段,所以我做了... numberOfTimesClicked.value + = 1而是然後存儲新的值// NumberOfTimesClickedHiddenField.Value = numberOfTimesClicked.ToString()..它沒有更新隱藏的領域,所以我每次點擊它從0開始! – Sam