He visto soluciones a este otro lugar, pero todos ellos utilizan la idea de establecer un DataRowView igual a mi DataGridViewRow.DataBoundItem, a continuación, utilizando el DataRowView.Propiedad de fila (En mi código de abajo).

Aquí está mi código:

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

El problema es que si usted está haciendo esto para copiar datos de una tabla a otra, obtendrá el error «Esta fila ya pertenece a otra mesa». Hay alguna forma de copiar realmente esta fila, en lugar de referencia de ella? Yo preferiría no tener que acaba de bucle a través de cada célula, la copia de su propiedad Value. Hay una manera mejor de hacer esto?

Solución utilizando NYSystemsAnalyst sugerencia:

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
InformationsquelleAutor Seth Moore | 2009-09-17

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here