按钮单击Repeater控件内部

时间:2012-12-22 14:17:31

标签: asp.net vb.net repeater

我正在尝试在页面上使用帮助指示器。我可以访问按钮,但是我无法点击按钮来增加总点击次数。我正在使用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

2 个答案:

答案 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
相关问题