0

我正在尝试获得一个有用的指标来在页面上工作。我可以访问按钮,但无法通过单击按钮来增加点击总数。我在后面使用 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
4

2 回答 2

1

我看起来你的total变量是一个本地变量。每次调用movies_ItemCommand都会创建一个名为的新变量total并将其值设置为 0。将声明移到方法之外,即类中的全局私有字段。

于 2012-12-22T14:58:46.213 回答
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
于 2013-05-24T16:13:32.923 回答