Глобальная переменная VB.net не работает правильно? - PullRequest
0 голосов
/ 18 августа 2011

У меня проблема с глобальной переменной в VB.Net.

В одной подпрограмме (запускаемой кнопкой) я создаю объекты и сохраняю их в глобальной переменной (массиве).После этого я создаю таблицу (DataGrid).

С помощью второй кнопки запускается другая подпрограмма и пытается использовать массив из глобальной переменной, но он, кажется, пуст.код:

<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 Ответ

2 голосов
/ 18 августа 2011

Это на сайте?

Если это так, пользователь, нажимающий вторую кнопку, создает другой запрос. Переменная, в которую вы сохраняете, не сохраняется между запросами, поэтому ее там больше нет (как это было установлено для первого запроса, который теперь завершен). Чтобы сохранить такие значения в нескольких запросах, вам нужно использовать способ их хранения, который длится дольше, например, Session.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...