web-dev-qa-db-ja.com

DataTableから値を取得する

DataTableからすべての列の値を取得し、それをListBoxに格納したいと考えています。これが私のコードです

            If myTableData.Rows.Count > 0 Then
                For i As Integer = 0 To myTableData.Rows.Count
                    Dim DataType() As String = myTableData.Rows(i).Item(1)
                    ListBox2.Items.AddRange(DataType)
                Next
            End If

しかし、そのコードをコンパイルすると、次のようなエラーメッセージが表示されます。

Unable to cast object of type 'System.String' to type 'System.String[]'

だから、この問題を解決するにはどうすればいいですか?私を助けてください....

7
Flashidkz

これを次のように変更してみてください。

If myTableData.Rows.Count > 0 Then
  For i As Integer = 0 To myTableData.Rows.Count - 1
    ''Dim DataType() As String = myTableData.Rows(i).Item(1)
    ListBox2.Items.Add(myTableData.Rows(i)(1))
  Next
End If

注:ループはゼロベースのインデックスであるため、ループは行数よりも1つ少なくする必要があります。

13
LarsTech

DataTypeを誤って文字列ではなく配列として宣言したようです。

3行目を次のように変更します。

Dim DataType As String = myTableData.Rows(i).Item(1)

うまくいくはずです。

7
Richard