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 に答える