2017-07-06 236 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