如何在Visual Basic(.NET)中绑定到MySQL数据库的datagridview上实现自动刷新

时间:2014-09-24 02:31:24

标签: mysql sql vb.net datagridview

我有一个带有datagridview的visual basic程序,在加载时绑定到mysql数据库...我还有一些字段,你可以更新所选行,添加,删除等等,我想要一个自动-refresh在更新时...但是,我无法弄清楚如何执行此操作,因为表只是在旧行下添加新行。有没有办法为mysql绑定的datagridview进行完整的表刷新而不必重新启动程序?

提前致谢!

2 个答案:

答案 0 :(得分:1)

网格未绑定到MySQL。它绑定到DataTable。如果您想要完整刷新数据,那么只需清除该表,然后重新填充它。

myDataTable.Rows.Clear()

答案 1 :(得分:0)

正如jmcilhinney建议的那样,datagridviews被绑定到DataTables(或者有时候是我自己的情况下的列表),所以他说的话听起来像应该工作。显然,由于它没有按照您的意愿行事,所以我的建议是:

你说你有"字段"在哪里可以更新,添加,删除等所选行,对吗?听起来你还在用新行做某事。正如您所建议的那样,它是一个数据绑定网格视图,我怀疑您是否真的以典型的方式添加它们,而是采用某种程序化替代方案。

因此,尝试实施您的解决方案,而不是重写"以及更多的SQL更新。当用户输入他们希望更新的行的数据或他们想要创建的新行时,搜索行以获取给定的主键。

对于数据表,代码看起来像这样:

string s = "primaryKeyValue";
DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
foundRow.Item["DesiredColumn"] = newValue;

来源:https://msdn.microsoft.com/en-us/library/y06xa2h1.aspx

如果列表绑定为DataSource,我相信您必须执行以下操作:

List<Thing> things = new List<Thing>(); // in case this wasn't obvious
Thing tempThing;
tempThing = things.Find(x => x.PartName.Contains("seat")));
tempThing.Value = newValue;

在您修改了基础数据源之后,理论上,您应该能够简单地调用DataGridView.Refresh(),但是您可能需要做一些比较简单的事情,比如将数据源设置为null然后重新绑定它为了强制使用EndEdit。

我知道这已经很晚了,但我希望它仍能帮助别人。