получить значение от 2-го arraylist в сеансе - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть 2-й arraylist с 2 фиксированными столбцами и динамическими строками.Массив будет назначен переменной сеанса в конце кода ниже.Мой вопрос заключается в том, как можно зациклить массив из сеанса, чтобы получить его значение?

If .SQLDS.Tables(.sSQLDSTbl).Rows.Count > 0 Then
    Dim NoOfAdjType(1, .SQLDS.Tables(.sSQLDSTbl).Rows.Count - 1)

    For iRow As Integer = 0 To .SQLDS.Tables(.sSQLDSTbl).Rows.Count - 1
        If Not .SQLDS.Tables(.sSQLDSTbl).Rows(iRow).Item("i_commAmt") Is System.DBNull.Value Then
            NoOfAdjType(0, iRow) = .SQLDS.Tables(.sSQLDSTbl).Rows(iRow).Item("productType")
            NoOfAdjType(1, iRow) = Format(.SQLDS.Tables(.sSQLDSTbl).Rows(iRow).Item("i_commAmt"), "#,##0.00")
        End If
    Next

        Session("iNoOfAdjAmtType") = NoOfAdjType
End If

Я пробовал это, но это дает мне ошибку 'Слишком много аргументов для' Public Overridable Default Property Itemindex As Integer) As Object '

Dim NoOfAdjType As ArrayList = CType(Session("iNoOfAdjAmtType"), ArrayList)
For i As Integer = 0 To NoOfAdjType.Count
    Dim a As String = NoOfAdjType(0, i)
    Dim b As String = NoOfAdjType(1, i)
Next

Ответы [ 3 ]

0 голосов
/ 05 сентября 2011

Я не уверен, что такое тип данных массива, но именно так вы манипулируете многомерными массивами в VB.NET, принимая тип данных как объект

' declaring variable of multi-dim array
Dim NoOfAdjType As Object(,)
' create array object of needed dimension (you may use redim keyword)
NoOfAdjType = new Object(1, .SQLDS.Tables(.sSQLDSTbl).Rows.Count - 1) {}

...

' push it in session
 Session("iNoOfAdjAmtType") = NoOfAdjType

...

' get back from session
NoOfAdjType = DirectCast(Session("iNoOfAdjAmtType"), Object(,))
...
For i As Integer = 0 To NoOfAdjType.GetLength(0)
   For j As Integer = 0 To NoOfAdjType.GetLength(1)
      Dim a As Object = NoOfAdjType(i, j);
      ...
   Next
Next

См. Эту статью MSDN для массива в VB.NET: http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx

0 голосов
/ 05 сентября 2011

Попробуйте,

Dim a As String = NoOfAdjType(0)(0,0)

Или используйте

For Each arr As Object(,) In NoOfAdjType

Next
0 голосов
/ 05 сентября 2011

Тип, с которым вы имеете дело, Object(,).Таким образом, при чтении из сеанса вы можете привести его обратно к этому типу.

Вот статья на MSDN , которая иллюстрирует, как читать значения из сеанса:

Dim NoOfAdjType as Object(,) = CType(Session("iNoOfAdjAmtType"), Object(,))
' do something with the list

И если вы хотите безопасно выполнить проверку, убедившись, что в сеансе есть элемент с данным идентификатором:

If Session.Item("iNoOfAdjAmtType") IsNot Nothing Then
    ' We have a value in the session with the given id
    Dim NoOfAdjType as Object(,) = CType(Session("iNoOfAdjAmtType"), Object(,))
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...