2016-10-11 9 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'(オーバーライドされていなければ)は' DataRow'の 'System.Data.DataRow'型の名前を返します。 – Fabio

+0

html.Append私はこれから得ました: Dim html As New StringBuilder それを正しくするために私のコードを変更する必要がありますか?どのコード? – Nurul

答えて

0

あなたがhtml.Append(dt.Rows.Item(0)(0))を使用するときには、すでに正しい結果を得ました - 今、あなたは正しいループを記述する必要があります。

あなたがDataTableインスタンスを持っていることを気づい - xmlで作業する場合、私は私が私のXML構造があることを確認することができたもので、XElementタイプでLINQ to Xmlを使って好きなすべての行と列

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 

をループのためにこれを使用しますコンパイル中に正しい。
のVisual Basicは、C#にはない便利な機能を持っている - 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 = row(column.Index).ToString() プログラムを実行しようとしましたが、エラー "Microsoft.VisualBasic.dllで 'System.MissingMemberException'型の例外が発生しましたが、ユーザーコードで処理されませんでした 追加情報: 'DataColumn'タイプのパブリックメンバー 'Index'が見つかりません。 – Nurul

+0

良いニュース:今すぐ実行できます。 Bad news:ページに何も表示されない – Nurul

+0

'html'や' table'オブジェクトに正しく生成されたデータが含まれているかどうかをデバッグして調べることができます。その場合は、そのデータをページに転送する方法を確認する必要があります – Fabio

関連する問題