0

以下は、GridViewRow から DataRow オブジェクトに値を取得するために使用しようとしているループです (Visual Basic の見捨てられた言語を使用)。ただし、この行では:

                dr(i) = r.Cells(i).Text

次のエラー メッセージが表示され続けます。

the value of type string cannot be converted to system.data.datarow

誰かがこれを行う方法について正しい方向に向けることができますか?

        Dim rows As New List(Of GridViewRow)()

        For Each item As GridViewRow In grdExpProd.Rows
            rows.Add(item)
        Next

        Dim value As Integer = rows.Count

        Dim dt As New DataTable()


        For index As Integer = value - 1 To 0 Step -1
            Dim dr As DataRow()
            Dim r As GridViewRow = rows(index)

            For i As Integer = 0 To r.Cells.Count - 1
                dr(i) = r.Cells(i).Text
            Next

            dt.Rows.Add(dr)
        Next
4

3 に答える 3

1

DataRows Item プロパティにテキストを追加する必要があると思います。これにより、DataRow の個々のセルにアクセスできるようになります。また、GridRowView に存在する列を新しい に追加する必要がありますDataTable

For i = 1 To rows(0).Cells.Count
    dt.Columns.Add("Header" & i)
Next

For index As Integer = value - 1 To 0 Step -1
    Dim dr As DataRow = dt.NewRow()
    Dim r As GridViewRow = rows(index)

    For i As Integer = 0 To r.Cells.Count 
        dr.Item(i) = r.Cells(i).Text
    Next

    dt.Rows.Add(dr)
Next
于 2012-09-09T02:02:47.157 に答える
0

誤って dr を単一の DataRow オブジェクトとしてではなく、DataRow オブジェクトの配列として作成しました。交換してみる

Dim dr As DataRow()

Dim dr As New DataRow()
于 2012-09-09T00:35:44.517 に答える
0

交換してみる

Dim dr As DataRow()

Dim dr As DataRow = dt.NewRow()

また、別のポスターが指摘したように、行を追加する前に、データ テーブルに列を作成する必要があります。

于 2012-09-09T00:52:50.640 に答える