2011-08-18 45 views
0

我在VB.Net中有一個全局變量的問題。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> 

問題是什麼? 爲什麼沒有陣列中的物體?

回答

2

這是在網站上?

如果是這樣,用戶點擊第二個按鈕創建另一個請求。您保存的變量不會保存在請求之間,因此它不再存在(因爲它是在第一個請求中設置的,現在已完成)。爲了在多個請求中保留這樣的值,您需要使用存儲持續時間更長的方法,例如Session。

+0

以及我選擇vb.net,因爲它可以處理數據庫和Excel表。用戶用一個按鈕觸發第一個Sub,用第二個按鈕觸發第二個Sub(我遇到「錯誤」) - 我以爲全局Var在