Ошибка ASP.Net - Невозможно привести объект типа «System.String» к типу «System.Data.DataTable» - PullRequest
2 голосов
/ 04 октября 2009

Я получаю ошибку ниже

Невозможно привести объект типа 'System.String' к типу 'System.Data.DataTable'.

Это код, который я использую

Dim str As String = String.Empty

    If (Session("Brief") IsNot Nothing) Then

        Dim dt As DataTable = Session("Brief")
        If (dt.Rows.Count > 0) Then
            For Each dr As DataRow In dt.Rows
                If (str.Length > 0) Then str += ","
                str += dr("talentID").ToString()
            Next
        End If

    End If

    Return str

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 октября 2009

Я не парень VB, но я бы подумал, что вам нужно привести переменную сеанса к правильному типу (DataTable):

Dim dt As DataTable = CType(Session("Brief"), DataTable);
1 голос
/ 04 октября 2009

Как насчет этого:

Dim str As String = ""

If Not Session("Brief") Is Nothing Then
  Dim dt As DataTable = TryCast(Session("Brief"), DataTable)

  If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then
    For Each dr As DataRow In dt.Rows
      If (str.Length > 0) Then
        str += ","
      End If

      str += dr("talentID").ToString()
    Next
  End If
End If

Return str

Используйте TryCast и проверка произнесения прошла успешно или нет ...

А вот версия с небольшим количеством LINQ для хорошей меры:

Dim str As String = ""

If Not Session("Brief") Is Nothing Then
  Dim dt As DataTable = TryCast(Session("Brief"), DataTable)

  If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then
    str = Join((From r In dt Select CStr(r("talentID"))).ToArray, ",")
  End If
End If

Return str
1 голос
/ 04 октября 2009

Думаю, вам нужно «разыграть» сессию («Brief»):

Dim dt As DataTable = CType(Session("Brief"), Datatable)

см. Пример здесь

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