VB.net全局变量不能正常工作吗?

时间:2011-08-18 17:15:39

标签: vb.net global-variables

我在VB.Net中遇到了一个全局变量的问题。

在一个子(由按钮触发)中,我创建对象并将它们存储到全局变量(数组)中。之后我创建了一个表(DataGrid)。

使用第二个按钮触发另一个sub并尝试使用全局变量中的数组,但它似乎是空的。

以下是代码:

<script runat="server">
    Dim array_datensatz(12) As Datensatz

    Sub submit1_click(ByVal Sender As Object, ByVal E As EventArgs)
        Dim cellX As New TableCell()

        For n = 0 To 12 '13 objects a created
            Dim tmpklasse As New Datensatz(n)
            array_datensatz(n) = tmpklasse

            ' MsgBox(tmpklasse.methode_merkmal1) ' method_merkmal1 returns a Integer
            ' MsgBox(array_datensatz(n).methode_merkmal1())   'both work
        Next n

        ItemsGrid.DataSource = CreateDataSource()   'creates table
        ItemsGrid.DataBind()
    End Sub

    Function CreateDataSource() As ICollection
        Dim dt As New DataTable()
        Dim dr As DataRow

        dt.Columns.Add(New DataColumn("Merkmal1"))
        dt.Columns.Add(New DataColumn("Merkmal2"))
        dt.Columns.Add(New DataColumn("Merkmal3"))

        Dim i As Integer

        For i = 0 To (array_datensatz.GetLength(0) - 1)   'länge des array der ergebnise (0. dim) = #results

            dr = dt.NewRow()
            dr(0) = array_datensatz(i).methode_merkmal1()
            dr(1) = array_datensatz(i).methode_merkmal2()
            dr(2) = array_datensatz(i).methode_merkmal3()
            dt.Rows.Add(dr)
        Next i

        Dim dv As New DataView(dt)

        Return dv
    End Function 'CreateDataSource

    Public Sub sub_anonym(ByVal Sender As Object, ByVal E As EventArgs)
        For i = 0 To (array_datensatz.GetLength(0) - 1)   
            MsgBox(array_datensatz(i).methode_merkmal1()) 'throws an exception saying that ~"the object reference doesn't target an object-instance"
        Next i
    End Sub

</script>

有什么问题? 为什么不在数组中的对象?

1 个答案:

答案 0 :(得分:2)

这是在一个网站?

如果是这样,用户点击第二个按钮会创建另一个请求。您保存的变量不会保存在请求之间,因此它不再存在(因为它是在第一个请求上设置的,现在已经完成)。要在多个请求中保留这样的值,您需要使用一种存储持续时间更长的方法,例如会话。