4 Stimmen

Konvertieren einer DataGridViewRow in eine DataRow

Ich habe Lösungen für dieses anderswo gesehen, aber sie alle verwenden die Idee der Einstellung eines DataRowView gleich meine DataGridViewRow.DataBoundItem, dann mit der DataRowView.Row-Eigenschaft (in meinem Code unten).

Hier ist mein Code:

Dim tblTemp As New DataTable()
Dim row As Windows.Forms.DataGridViewRow
Dim rowView As DataRowView

For Each row In grdLabels.SelectedRows
    If (row.Cells("Status").Value = Status.RECIEVED) Then
        rowView = DirectCast(row.DataBoundItem, DataRowView)
        tblTemp.Rows.Add(rowView.Row)
    End If
Next

Das Problem ist, dass Sie beim Kopieren von Daten aus einer Tabelle in eine andere die Fehlermeldung "Diese Zeile gehört bereits zu einer anderen Tabelle" erhalten. Gibt es eine Möglichkeit, diese Zeile tatsächlich zu kopieren, anstatt sie zu referenzieren? Ich würde es vorziehen, nicht jede Zelle in einer Schleife durchlaufen zu müssen, um ihre Werteigenschaft zu kopieren. Gibt es eine bessere Möglichkeit, dies zu tun?

Lösung unter Verwendung des Vorschlags von NYSystemsAnalyst:

Dim tblTemp As New DataTable()
Dim row As Windows.Forms.DataGridViewRow
Dim rowView As DataRowView

If TypeOf grdLabels.DataSource Is DataTable Then
    tblTemp = CType(grdLabels.DataSource, DataTable).Clone()
End If

For Each row In grdLabels.SelectedRows
    If (row.Cells("Status").Value = Status.RECIEVED) Then
        rowView = DirectCast(row.DataBoundItem, DataRowView)
        tblTemp.ImportRow(rowView.Row)
    End If
Next

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X