代码之家  ›  专栏  ›  技术社区  ›  Abu Muhammad

为什么我的计数器变量不在这个vb.net代码示例中递增?

  •  1
  • Abu Muhammad  · 技术社区  · 15 年前

    我有以下代码

    Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    
        Dim counter As Integer = 0
        Dim t As DataTable = DirectCast(Session("MyDataTable"), DataTable)
        Dim row1 As DataRow = t.NewRow()
    
    
    
        If (isUnique(t) And counter < 30) Then
            row1("ID") = counter + 1
            row1("univirsityID") = ddlUnivs.SelectedValue
            row1("majorID") = ddlMajors.SelectedValue
            row1("UniName") = ddlUnivs.SelectedItem.Text
            row1("MajorName") = ddlMajors.SelectedItem.Text
            t.Rows.Add(row1)
            Session("MyDataTable") = t
            GridView1.DataSource = t
            GridView1.DataBind()
            lblMsg.Text = "تم اضافة الرغبة"
            counter = counter + 1
    
        Else
            lblMsg.Text = "سبق لك ادخال الرغبة"
        End If
    
    End Sub
    

    问题是row1(“id”)没有更改,它一直为添加到数据表的所有行获取1的值。 谢谢你的帮助 事先谢谢。

    6 回复  |  直到 15 年前
        1
  •  3
  •   Jan Jongboom    15 年前

    删除您当前的反声明(因为每个人都在发布),并将其放在您的类的顶部:

    Public Property Counter() As Integer
         Get
             Return IIf(ViewState("counter") Is Nothing, 0, CInt(ViewState("counter")))
         End Get
         Set(ByVal value As Integer)
             ViewState("counter") = value
        End Set
    End Property
    

    这样你就可以 counter 页面的statefull viewstate中的变量,它不会在页面循环后丢失。

        2
  •  2
  •   Wil    15 年前

    用这条线

    Dim counter As Integer = 0
    

    每次单击按钮时都要设置计数器。

    您需要以会话或其他方式存储计数器。

        3
  •  1
  •   dwhiteho    15 年前

    当您在进入方法时重新初始化它时,计数器将始终为0。

    有什么地方应该有一个for循环吗?

        4
  •  1
  •   Jeff Hornby    15 年前

    问题是每次单击该按钮时都将计数器变量初始化为0。您需要将计数器移到下一个更高的级别,并将其保存在回发之间的某个位置。我建议创建一个会话变量并将其保存在其中。

        5
  •  1
  •   ChickenMilkBomb    15 年前

    我冒昧地猜测您实际上正在数据库中查找标识列。否则你的身份证会被复制,这不是布埃诺。

    您要在这段代码中执行循环吗?没有循环,所以计数器从零开始加1。这只能插入一行。

        6
  •  0
  •   Robert Harvey    15 年前

    counter 是一个局部变量,当子变量结束时,它将超出范围。这就是它不递增的原因。