从数据集问题刷新Datagridview

时间:2013-08-13 04:23:52

标签: vb.net datagridview

我似乎是把头发拉到我眼前看起来非常直接的东西上。在更改数据集后,我无法使datagridview控件正确更新。

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

例如,我有一个查询,它给我Store Name和Manager,并自动填充我的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没有清除不再填充的旧列。

所有帮助表示赞赏。感谢

2 个答案:

答案 0 :(得分:1)

我建议您直接从VB创建连接和数据集,并在数据集中显示表格。在表的底部是一个标准查询,但是您可以创建自己的...使用变量作为参数,然后您可以通过表适配器调用查询并将其直接分配给datagridview。 这似乎总是适用于我的程序。你使用什么类型的数据库?可能很明显,但只是为了确保,datagridview没有绑定吗?
来自我的一个项目的示例
dgData.DataSource = TblEventsTableAdapter.ViewEvent(cmbEvents.SelectedItem.ToString)
其中dgdata显然是datagridview。 ViewEvent是在数据集中创建的自定义查询,它包含1argument。希望这对你有用

答案 1 :(得分:1)

好的,经过一些故障排除和解决代码之后,我发现对此的简单解决方案是数据表本身没有释放列标题。因此,即使datagridview和数据集被清除,数据表仍然被填充。

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

dt.Columns.Clear()