代码之家  ›  专栏  ›  技术社区  ›  Seth Moore

将DataGridViewRow转换为DataRow

  •  4
  • Seth Moore  · 技术社区  · 15 年前

    这是我的密码:

    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
    

    问题是,如果您这样做是为了将数据从一个表复制到另一个表,则会出现错误“此行已属于另一个表”。有没有办法复制这一行,而不是引用它?我不希望只需循环遍历每个单元格,复制其Value属性。有更好的方法吗?

    使用NYSystems分析师建议的解决方案:

    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
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   DCNYAM    15 年前

    请参阅此链接: http://support.microsoft.com/kb/308909

    您需要使用ImportRow()方法。