我似乎是把头发拉到我眼前看起来非常直接的东西上。在更改数据集后,我无法使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没有清除不再填充的旧列。
所有帮助表示赞赏。感谢
答案 0 :(得分:1)
我建议您直接从VB创建连接和数据集,并在数据集中显示表格。在表的底部是一个标准查询,但是您可以创建自己的...使用变量作为参数,然后您可以通过表适配器调用查询并将其直接分配给datagridview。
这似乎总是适用于我的程序。你使用什么类型的数据库?可能很明显,但只是为了确保,datagridview没有绑定吗?
来自我的一个项目的示例
dgData.DataSource = TblEventsTableAdapter.ViewEvent(cmbEvents.SelectedItem.ToString)
其中dgdata显然是datagridview。 ViewEvent是在数据集中创建的自定义查询,它包含1argument。希望这对你有用
答案 1 :(得分:1)
好的,经过一些故障排除和解决代码之后,我发现对此的简单解决方案是数据表本身没有释放列标题。因此,即使datagridview和数据集被清除,数据表仍然被填充。
以下命令解决了我的问题:
dt.Columns.Clear()