2016-10-11 2 views
0

Может ли кто-нибудь помочь, скажите, почему данные из базы данных не отображались в строках? Вместо этого отображаются «System.Collections.ArrayList» и «System.Data.DataRow».данные в arraylist отображаются неправильно. вместо этого отображает «System.Collections.ArrayList» - vb.net

Dim myArray(4, 4) As String 
For Each dtrow As DataRow In dt.Rows 
    list.Add(dtrow) 
Next 

For i = 0 To myArray.GetUpperBound(0) 
    If i = 0 Then 
    html.Append("<tr>") 
    ElseIf (i > 0 And i < 5) Then 
    html.Append("</tr>") 
    html.Append("<tr>") 
    For j = 0 To myArray.GetUpperBound(1) 
     Dim no = 0 
     'insert the code i mentioned below here' 
     no += 1 
    Next ' j' 
    End If ' if in i' 
Next ' i 

Когда я попытался запустить с помощью этого 1 строку ниже, вставленный в коде выше, он отображает System.Collections.ArrayList в строках. html.Append(list)

Но когда я попытался бежать, используя эту 1 строку ниже, вставленную в вышеуказанный код, она отображает System.Data.DataRow в строках. html.Append(list(no))

===================================================================================================================================================================================== ======================================

Другой метод, который я пробовал, когда я попытался запустить эту строку «html.Append (dt .Rows.Item (0) (0)) ", он отображает правильные данные, но когда я попытался сделать цикл, чтобы увеличить количество столбцов и строк, он показывает то же значение данных. как будто цикл «rw» и «col» не работал.

For j = 0 To myArray.GetUpperBound(1) 
     Dim no = 0 
     For rw = 0 To 5 
     Dim rno = 0 
     For col = 0 To 5 
      Dim cno = 0 
      no += 1 
      html.Append(dt.Rows.Item(rno)(cno)) 
      cno += 1 
     Next 
     rno += 1 
    Next 
    Next 'j' 
+0

Ответ находится внутри 'метод html.Append', который вы не показали. На основе вывода вы получаете, очевидно, внутри метода 'html.Append', который вы вызываете' .ToString() 'для данного параметра. По умолчанию 'ToString' (если не переопределяет) вернет имя типа -' System.Data.DataRow' для 'DataRow' – Fabio

+0

html.Append я получил от этого: Dim html As New StringBuilder() Так что должен ли я изменить свой код, чтобы все было правильно? Какой код? – Nurul

ответ

0

Вы уже получили правильный результат, когда вы использовали html.Append(dt.Rows.Item(0)(0)) - теперь вам нужно написать правильный цикл.

Замечено, что у вас есть DataTable экземпляр - используется для пробегаем по всем строкам и столбцам

For Each row As DataRow in dt.Rows 
    html.Append("<tr>") 

    For Each column in dt.Columns 
     html.Append("<td>") 
     html.Append(row(column.Ordinal)) 
     html.Append("</td>") 
    End For 

    html.Append("</tr>") 
End For 

При работе с xml Мне нравится использовать LINQ to Xml с XElement типа, с тем, что я могу быть уверен, что моя структура XML является правильно во время компиляции.
Visual Basic есть хорошая особенность, С # не - XML Literals (Visual Basic)

Dim table As XElement = <table></table> 

For Each row As DataRow in dt.Rows 
    Dim tr As XElement = <tr></tr> 

    For Each column in dt.Columns 
     Dim td As XElement = <td></td> 
     td.Value = row(column.Ordinal).ToString() 

     tr.Add(td) 
    End For 

    table.Add(tr) 
End For 
+0

td.Value = строка (column.Index) .ToString() Я попытался запустить программу, но ошибка «исключение типа„System.MissingMemberException“произошло в Microsoft.VisualBasic.dll, но не был обработан в пользовательском коде Дополнительная информация: Public member 'Index' on type 'DataColumn' не найден. " – Nurul

+0

Хорошие новости: я могу запустить его сейчас. Плохая новость: ничего не отображается на странице – Nurul

+0

Вы можете отлаживать и проверять, содержат ли 'html' или' table' объекты правильно сгенерированные данные. Если да, то вам нужно проверить, как вы передаете эти данные на страницу – Fabio

Смежные вопросы