Datagridview如何从另一个datagridview中填充数据

Datagridview how to fill data from another datagridview

在我的发票软件中,我有一个“主”datagridview,我将它与查找功能集成在一起:一旦用户在“代码”字段上按 F3,它就会显示一个模态表单和另一个 datagridview,显示可供选择的产品列表从。

我卡住的地方是用户在所选产品上单击“确定”,因为我不太清楚如何正确填充 Datagridview 以便将所有内容都放在同一行上。这是我的代码:

Private Function RicercaxCodiceArticolo(ByVal codiceart As String)

    Dim strsql As String
    Dim cmd As SqlCommand
    Dim source As New BindingSource
    Dim count As Integer

    connection.Open()
    strsql = "SELECT CODICEARTICOLO AS 'Codice', DESCRIZIONEARTICOLO AS 'Descrizione', UNITAMISURA AS 'Um', CODICEIVA AS 'Iva' " _
            & ",COSTOBASE AS 'Costo', PREZZOBASE AS 'Prezzo', COSTOULTIMO AS 'Costo Ult.', BARCODE AS 'Barcode', NOTEARTICOLO AS 'Note' " _
            & ",CATEGORIAARTICOLO AS 'Categ.Art.', GIACENZA AS 'Giacenza', FORNITOREPREF AS 'Fornit. Pref.' FROM Articoli " _
            & " WHERE CODICEARTICOLO = '" & codiceart & "'"
    cmd = New SqlCommand()
    cmd.CommandText = strsql
    cmd.CommandType = CommandType.Text
    cmd.Connection = connection
    'TODO: Completare
    source.DataSource = cmd.ExecuteReader
    DataGridView1.Rows.Add(source.Current!Codice)
    DataGridView1.Rows.Add(source.Current!Descrizione)
    connection.Close()

End Function

A​​dd方法的第二行当然是错误的,但是如何在同一行填写所有数据呢?

嗯……我会假设一些你忽略告诉我们的事情。

  1. 我们必须假设第一个网格不使用 DataSource 并且列是在设计器中或在您未显示的某些代码中添加的。此假设基于将行直接添加到网格的代码,因为在数据绑定时无法将行直接添加到网格。

  2. 此外,我假设代码行......

    source.DataSource = cmd.ExecuteReader

    … 是 return 从 SQL 命令 cmdDataTable cmd

如果我的两个假设都是正确的,那么在我的小测试中,代码行......

source.Current

return source 中“选定”行的 DataRowView 对象,您只需将其转换为 DataRowView 即可获得所需的值添加到网格中的单行。像……

Dim drv As DataRowView
drv = CType(source.Current, DataRowView)
DataGridView1.Rows.Add(drv("Codice"), drv("Descrizione"))

最后,使用 DataTable 作为第一个网格的 BindingSourceDataSource 并简单地将行“导入”到 [=14= 中可能是更好的方法].选择你自己的毒药。