Vb.net 从数据集问题刷新Datagridview

Vb.net 从数据集问题刷新Datagridview,vb.net,datagridview,Vb.net,Datagridview,我似乎在为一件在我看来很直截了当的事情而发毛。更改数据集后,我无法使datagridview控件正确更新 我最初从数据集填充datagridview,并自动生成列,没有问题。但是,如果使用新数据重新生成数据集,datagridview将正确显示新数据,但不会删除旧列标题 例如,我有一个查询,它为我提供存储名称和管理器,并自动填充我的datagridview。然后,如果我将查询更改为只提供门店名称和主管,它将提供门店名称、经理(带空白列)和主管 我尝试了datagridview.refresh()

我似乎在为一件在我看来很直截了当的事情而发毛。更改数据集后,我无法使datagridview控件正确更新

我最初从数据集填充datagridview,并自动生成列,没有问题。但是,如果使用新数据重新生成数据集,datagridview将正确显示新数据,但不会删除旧列标题

例如,我有一个查询,它为我提供存储名称和管理器,并自动填充我的datagridview。然后,如果我将查询更改为只提供门店名称和主管,它将提供门店名称、经理(带空白列)和主管

我尝试了datagridview.refresh()和datagridview.update(),但似乎没有任何效果。 这是我的密码:

    MySQLConn.Open()

    Dim ExQry As New MySqlCommand(QryStr, MySQLConn)
    ExQry.CommandType = CommandType.Text
    Dim da As New MySqlDataAdapter(ExQry)
    dasCustomQryData.Clear() 'my dataset is called dasCustomQryData

    da.Fill(dasCustomQryData, "QryData")
    da.Update(dasCustomQryData, "QryData")

    With dgvCustomQuery
        .DataSource = Nothing
        .Dock = DockStyle.Fill
        .AutoGenerateColumns = True
        .DataSource = dasCustomQryData
        .DataMember = "QryData"
        .Refresh()
        .Visible = True
    End With

    MySQLConn.Close()
    da.Dispose()
    dasCustomQryData.Dispose()
因此,当我想更新我的datagridview时,我在上面的代码中插入了一个新的QryStr,它将重建我的数据集。数据集正在更新,因为datagridview包含正确的数据,但是,我的问题是datagridview没有清除不再填充的旧列


谢谢你的帮助。谢谢

我建议您直接从VB创建连接和数据集,并在数据集中显示表格。在表的底部是一个标准查询,但您可以创建自己的…使用变量作为参数,然后您可以通过表适配器调用查询并直接将其分配给datagridview。

这似乎总是对我的计划有效。你在使用什么样的数据库?可能很明显,但只是为了确保datagridview没有绑定正确?
来自我的一个项目的示例
dgData.DataSource=TblEventsTableAdapter.ViewEvent(cmbEvents.SelectedItem.ToString)

其中dgData显然是datagridview。ViewEvent是在数据集中创建的自定义查询,它接受1参数。希望这对您有用

好的,在进行了一些故障排除和代码处理之后,我发现解决这个问题的简单方法是datatable本身没有释放列标题。因此,即使datagridview和dataset被清除,datatable仍然被填充

以下命令解决了我的问题:

dt.Columns.Clear()

列中没有数据并不意味着它将停止显示dataTable中存在的列。那么如何检查数据集中有哪些数据?我的查询没有引用manager字段,我正在用新查询重新填充数据集之前清除数据集,因此如何检查该字段是否仍存在于我的数据集中?您可能可以循环遍历返回的所有记录,如果空字段的数量与
行相匹配。计数
,然后使该列不可见。好的,我可以尝试一下,但它仍然没有解释我如何在运行新查询并以旧数据结束之前清除数据集?当然,清除数据集并运行完全不同的查询不应该给我旧数据。我认为问题更多地与datagridview有关,而不是与dataset有关。谢谢Manny-我使用的是MySQL数据库。我通过我的软件建立连接字符串,因为它经常在数据库之间进行剪切和更改,这就是为什么我不想直接从VB硬连线连接,如果我能帮助的话。