选择新数据后如何在 VB.Net 中刷新 Datagridview

How refresh Datagridview in VB.Net after seletc a new data

我有一个问题,因为,当我想在 datagridview 中加载一个新的寄存器时,会显示先前记录的相同列以及所选寄存器的其他列。

这是已选数据

这是之前记录的新数据

我尝试了所有方法,但没有任何效果

        Pinicio.DataGridView1.Parent.Refresh()
        Pinicio.DataGridView1.EndEdit()
        Pinicio.DataGridView1.Refresh()
        Pinicio.DataGridView1.Parent.Refresh()

我会更好地解释它,当我第一次查询产品时,应用程序工作正常,但是当我尝试查找另一个产品时,它将上一篇文章的列与新选择的产品的列一起添加.

添加新产品的代码

Consulta= "SELECT * FROM ARTICULOS AR INNER JOIN ARTICULOSLIN ARL ON AR.CODARTICULO = ARL.CODARTICULO WHERE AR.REFPROVEEDOR = '" + code.ToString + "' AND ARL.TALLA = 'S'"
ConsultaSqlDataAdapter1 = New SqlDataAdapter(Consulta, Login.conexion)
                i1 = 0
                rs1.Clear()
                ConsultaSqlDataAdapter1.Fill(rs1, "TablaTallas")
                Pinicio.DataGridView1.DataSource = rs1.Tables(0)
            Pinicio.TabPage.TabPages.Add(Pinicio.TabPage2)
            Pinicio.TabPage.SelectedTab = Pinicio.TabPage2
            Frm_Buscar_Articulos.Close()

你应该先清除datagridview

Pinicio.dataGridView1.Rows.Clear();
Pinicio.dataGridView1.Refresh();

只有在不添加新行时才需要刷新

无需触摸网格。它只会显示其数据源中的任何内容。您应该填充 DataTable 并通过 BindingSource 将其绑定到网格。要“刷新”数据,只需重新填充相同的 DataTable。其他一切都会自行解决。如果您打算在重新填充之前清除 DataTable,则可能需要在开始和结束时在 BindingSource 上调用 SuspendBindingResumeBinding

您的抱怨是仍然

是的,恐怕就是这样;填充 table 的 DataAdapter 将根据需要创建新列。如果您随后对不同的查询重新使用相同的数据table,旧列将保留(并且为空)

Clear() 删除 ,而不是

我建议你做一个新的table:这是最简单的方法:

            Consulta= "SELECT * FROM ARTICULOS AR INNER JOIN ARTICULOSLIN ARL ON AR.CODARTICULO = ARL.CODARTICULO WHERE AR.REFPROVEEDOR = @c AND ARL.TALLA = 'S'"
            ConsultaSqlDataAdapter1 = New SqlDataAdapter(Consulta, Login.conexion)
            ConsultaSqlDataAdapter1.Parameters.Add("@c", SqlDbType.VarChar, 50).Value =  code.ToString() ' change 50 to the width of your column
            i1 = 0
            Dim dt as New DataTable 
            ConsultaSqlDataAdapter1.Fill(dt)
            Pinicio.DataGridView1.DataSource = dt

另请注意,我已经修复了您的 sql 注入黑客攻击倾向 sql。永远不要再写一个 SQL 字符串连接一个值到它的地方。始终使用参数。参见 http://Bobby-tables.com

使用 & 连接 VB 中的字符串,而不是 +