为什么我的计数器变量在这个VB.NET代码示例中没有增加?

时间:2010-01-27 18:24:33

标签: asp.net vb.net

我有以下代码

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”)剂量没有改变它为所有添加到datatable的行保持获得值1 任何帮助表示赞赏 提前致谢。

6 个答案:

答案 0 :(得分:3)

删除您当前的柜台声明(由于每个人都张贴的原因)并将其置于您的班级之上:

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变量保存在页面的有状态ViewState中,并且在页面循环后不会丢失。

答案 1 :(得分:2)

使用此行

Dim counter As Integer = 0

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

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

答案 2 :(得分:1)

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

那里应该有一个for循环吗?

答案 3 :(得分:1)

我冒昧地猜测你实际上是在寻找数据库中的标识列。否则你的ID可能会重复,这不是bueno。

您是否希望在此代码中执行循环?没有循环,所以计数器从零开始并增加1。这只能插入一行。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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