Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Visual Basic(.NET)中对绑定到MySQL数据库的datagridview实现自动刷新_Mysql_Sql_Vb.net_Datagridview - Fatal编程技术网

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

如何在Visual Basic(.NET)中对绑定到MySQL数据库的datagridview实现自动刷新,mysql,sql,vb.net,datagridview,Mysql,Sql,Vb.net,Datagridview,我有一个带有datagridview的visual basic程序,它在加载时绑定到mysql数据库。。。我也有一些字段,你可以更新选定的行,添加,删除等,我想有一个自动刷新后更新。。。但是,我不知道该怎么做,因为表只是在旧行的下面添加新行。有没有一种方法可以在不重新启动程序的情况下对绑定mysql的datagridview进行完整的表刷新 提前谢谢 网格未绑定到MySQL。它绑定到一个数据表。如果您想完全刷新数据,只需清除该表,然后重新填充即可 myDataTable.Rows.Clear()

我有一个带有datagridview的visual basic程序,它在加载时绑定到mysql数据库。。。我也有一些字段,你可以更新选定的行,添加,删除等,我想有一个自动刷新后更新。。。但是,我不知道该怎么做,因为表只是在旧行的下面添加新行。有没有一种方法可以在不重新启动程序的情况下对绑定mysql的datagridview进行完整的表刷新


提前谢谢

网格未绑定到MySQL。它绑定到一个
数据表
。如果您想完全刷新数据,只需清除该表,然后重新填充即可

myDataTable.Rows.Clear()

正如jmcillhinney所建议的,datagridviews绑定到DataTables(或者在我自己的例子中有时是列表),所以他所说的听起来应该是可行的。很明显,这并没有按照你的要求进行,我的建议是:

您说过您有“字段”,可以在其中更新、添加、删除选定的行,对吗?听起来你好像在对新行做些什么。正如您所建议的,这是一个数据绑定的gridview,我怀疑您是否真的以典型的方式添加了它们,而是使用了某种编程替代方法

因此,尝试将您的解决方案实现为更少的“重写”,更多的是SQL更新。当用户输入要更新的行或要创建的新行的数据时,在这些行中搜索给定的主键

对于datatable,代码如下所示:

string s = "primaryKeyValue";
DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
foundRow.Item["DesiredColumn"] = newValue;
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;
资料来源:

对于绑定为数据源的列表,我认为您必须执行以下操作:

string s = "primaryKeyValue";
DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);
foundRow.Item["DesiredColumn"] = newValue;
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;
List things=new List();//以防这不明显
诱人的事物;
testhing=things.Find(x=>x.PartName.Contains(“seat”));
Value=newValue;
在修改了基础数据源之后,理论上,您应该能够简单地调用DataGridView.Refresh(),但是您可能需要做一些更复杂的事情,比如将数据源设置为null,然后重新绑定以强制EndEdit


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

如果您已清除
数据表,并且该表已绑定到网格,则当前没有行。我认为您需要向我们展示您实际在做什么,而不是描述您认为您在做什么。datagridview是从数据库中的mysql查询填充的,当我尝试该代码时,它错误地说“无法清除此列表”。您确定您清除了
DataTable
而不是
datagridview
?其他人自己编辑了我的答案,并提供了不正确的代码。我删除了那个代码,并用我描述的代码替换了它。不能从绑定的网格中删除行;您必须使用底层数据源,即
数据表
。没有理由不能清除
数据表
,这正是我一开始说的。