【问题标题】:Transferring one datagridview data to another datagridview in VB.NET在 VB.NET 中将一个 datagridview 数据传输到另一个 datagridview
【发布时间】:2014-12-23 12:16:20
【问题描述】:

问题:将多个行和列从一个 datagridview(非数据绑定)移动到另一个 datagridview,然后从另一个数据绑定的表单显示第二个 datagridview 行。

开发平台:VB.NET 2008

问题描述:

  • 我在另一个表单的 datagridview 中有一些行和列,这些行和列现在是从本地数据库中填充的,该数据库现在已连接到我的应用程序中。
  • Update 参数内的 EncodingCompleteDataSet 出现错误,提示“错误 1 ​​'EncodingCompleteDataSet' 是一种类型,不能用作表达式。”
  • 在下面的代码中我应该在哪里插入anotherForm.Show()

问题代码:

Dim dr = DirectCast(DataGridViewX1.Rows(e.RowIndex).DataBoundItem, System.Data.DataRowView).Row
frmEncodeDatabase.EncodingCompleteDataSet.Tables("EncodingComplete").ImportRow(dr)
EncodingCompleteDataSetTableAdapters.EncodingCompleteTableAdapter.Update(EncodingCompleteDataSet, "EncodingComplete")

问候, 编码源

编辑:杰森·福克纳

代码:

For Each Col As DataGridViewColumn In DataGridViewX1.Columns
        frmEncodeDatabase.EncodingCompleteDataGridView.Columns.Add(DirectCast(Col.Clone, DataGridViewColumn))
    Next
    frmEncodeDatabase.EncodingCompleteDataGridView.Rows.Add(DataGridViewX1.Rows(0).Cells.Cast(Of DataGridViewCell).Select(Function(c) c.Value).ToArray)

您的代码(我稍作改动):

Dim table As DataTable = DirectCast(frmEncodeDatabase.EncodingCompleteDataGridView.DataSource, DataView).Table

    ' Add row 0 to the DataGridViewX1 grid to the table.
    ' This assumes the schema/column names are the same between the two.
    Dim addRow As DataRow = table.NewRow
    For Each Col As DataGridViewColumn In DataGridViewX1.Columns
        addRow(Col.Clone) = frmEncodeDatabase.EncodingCompleteDataGridView.Rows(0).Cells(Col.Clone).Value
    Next

    ' Add the copied row values to the table.
    ' Once we do this, it should appear in the EncodingCompleteDataGridView.
    table.Rows.Add(addRow)

但我在 table As DataTable = DirectCast(frmEncodeDatabase.EncodingCompleteDataGridView.DataSource, DataView).Table 中有一个错误,上面写着

InvalidCastException 未处理:无法转换类型的对象 'System.Windows.Forms.BindingSource' 输入 'System.Data.DataView'。

【问题讨论】:

  • 您在发布答案后彻底修改了您的问题。
  • 先生,我已经复制了您的代码(使用提取源数据等 cmets)并将其粘贴到我的代码上。我在“Dim table As DataTable = DirectCast(frmEncodeDatabase.EncodingCompleteDataGridView.DataSource, DataView).Table”上有一个错误,上面写着“InvalidCastException 未处理:无法将'System.Windows.Forms.BindingSource'类型的对象转换为'System .Data.DataView'。"
  • 我的代码如下:'拉取源数据。 Dim table As DataTable = DirectCast(frmEncodeDatabase.EncodingCompleteDataGridView.DataSource, DataView).Table ' 将 DataGridViewX1 网格的第 0 行添加到表中。 ' 这假定两者之间的模式/列名称相同。 Dim addRow As DataRow = table.NewRow For Each Col As DataGridViewColumn In DataGridViewX1.Columns addRow(Col.Clone) = frmEncodeDatabase.EncodingCompleteDataGridView.Rows(0).Cells(Col.Clone).Value Next table.Rows.Add(addRow)
  • 如上所述,在我的答案发布后,您彻底改变了您的问题。编辑后,我的回答与您发布的内容完全无关。关于错误,您需要发布更多关于如何它是数据绑定的详细信息。我根据您的原始问题做了一个假设。
  • @Jason Faulkner 为您编辑了帖子...

标签: .net vb.net datagridview


【解决方案1】:
'This is your new DataGridView

 Dim grdNew As New DataGridView



'This adds the row to your newDataGridView

    For Each item In Me.DataGridView1.Rows

        grdNew.Rows.Add(item)

    Next

【讨论】:

  • 但是,我不使用 grdNew,因为我有一个现有的 DataGridView 是数据绑定的(并且它来自另一个表单),因此您的 grdNew.Rows.Add(item) 将不起作用。有什么建议吗?
  • 先生,我不需要 grdNew,因为我已经是数据绑定的 dgv。将非数据绑定到此数据绑定 dgv 的行从 dgv(original) 传输并清除原始 dgv 的代码是什么。
  • 它可以是任何名称,只是我声明的名称可以是任何名称
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多