我正在尝试在页面上使用帮助指示器。我可以访问按钮,但是我无法点击按钮来增加总点击次数。我正在使用vb代码。
以下是我用来访问按钮并尝试使用以下方式进行某种形式计算的代码:
Protected Sub movies_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles movies.ItemCommand
Dim yCount As Integer
yCount = 0
Dim nCount As Integer
nCount = 0
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType =
ListItemType.AlternatingItem Then
Dim btnYes As Button = CType(e.Item.FindControl("btnYes"), Button)
Dim btnNo As Button = CType(e.Item.FindControl("btnNo"), Button)
Dim lblResults As Label = CType(e.Item.FindControl("lblResults"), Label)
Dim sArgument As String = CType(e.Item.DataItem,
DataRowView).Row.Item("MovieTitle").ToString
If btnYes.OnClientClick Then
yCount = yCount + 1
MsgBox(yCount)
lblResults.Text = yCount
ElseIf btnNo.OnClientClick Then
nCount = nCount + 1
End If
total = yCount + nCount
End If
MsgBox(total)
End Sub
答案 0 :(得分:1)
我看起来你的total
变量是本地变量。每次movies_ItemCommand
的调用都会创建一个名为total
的新变量,并将其值设置为0.将声明移到方法之外,即类中的全局私有字段。
答案 1 :(得分:0)
这是一个老问题,但无论如何我都要采取刺刀。
我想说每次页面回发时都会重置您的全局变量。您可以将其声明为静态(如果它适用于您的目的),或将值保留在会话或视图状态中,或者可能是隐藏字段或其他内容。对于我需要持久化的值,我倾向于使用类似下面的内容:
Protected Property PropertyName() As ReturnType
Get
If IsNothing(Session.Item("SessionIdentifier")) Then
Session.Item("SessionIdentifier") = DefaultValue
End If
Return Session.Item("SessionIdentifier")
End Get
Set(value As ReturnType)
Session.Item("SessionIdentifier") = value
End Set
End Property