2013-04-04 54 views
1

I'm具有数据绑定的DataGridView的问题之后:使用C#,数据绑定的DataGridView表示错误的数据插入行编程

I'm一个视图,其包括从一个SQL Server数据库作为数据源内连接。当我以编程方式插入行时,数据写入正确,但DataGridView没有显示它应该显示的数据。

视图中的某些列与另一个表连接在一起。基本上,我将主表中的ID值与子表连接起来,以便能够显示列的文本值。当我将包含id值的行插入到GridView中时,它将显示ID值,但不显示相应的文本值。

如果我重新启动程序,一切都显示正确。如何更新/刷新GridView以显示正确的文本值?我试过了GridView.EndEdit()和GridView.Refresh(),将数据源重新绑定到了GridView,并且一直在搜索网页没有成功。

+0

它是否类似于这个问题:http://stackoverflow.com/questions/3340192/datagridview-bound-to-bindinglist-does-not-refresh-when-value-changed – SamFisher83 2013-04-04 15:43:38

+0

你尝试了yourGridView.Refresh() ? – 2013-04-04 15:46:42

+0

可能是这个链接将帮助你http://stackoverflow.com/questions/11020384/how-do-i-update-reload-datagridview-bindingsource – 2013-04-04 16:11:50

回答

0

使用您在首次加载页面时使用的相同查询重新进行查询。

+0

嗯,如果我得到你的权利,这就是我试图避免,因为这意味着重新加载成千上万的行,并导致延迟... – Chris 2013-04-04 16:02:24

+0

你将不得不无论如何..如果其他用户修改了一些数据与此同时?通过刷新整个数据集,您可以获得最新的数据,避免冲突。 您始终可以使用数据分页加载数据的子集而不是“数千行”。 – Oscar 2013-04-05 07:44:53

+0

不,我不需要,真的:如果外部数据在数据库中发生更改,程序中的数据更改将导致DBConcurrencyException,这可能会被try catch子句捕获,询问用户是否要更新数据。只有15人同时处理数据库数据。由于数据相当可观,抛出异常的可能性不大。所以我尽量避免重新加载。不幸的是分页不是一个选项:-( – Chris 2013-04-05 12:09:49

0

DataGridView.Refresh()图形刷新,而不是一个数据刷新。更新后需要重新绑定数据源。

插入后将数据源设置为空:DataGridView.DataSource = null;然后通过重新查询数据并应用更新的源DataGridView.DataSource = someSource重新绑定数据源,最后再次调用DataBind()

它对于你来说不够好,我可能会建议限制结果集中返回的行数,或者在你的表中应用一些有价值的索引。

+0

嗨!谢谢你的回答,我已经回答了奥斯卡的一个类似的建议:如果外部数据在数据库中发生变化,程序中的数据改变将导致DBConcurrencyException,可以在try catch子句中被捕获,询问用户是否要更新数据。只有15人同时处理数据库数据。由于数据相当可观,抛出异常的可能性不大。所以我尽量避免重新加载。 – Chris 2013-04-05 12:14:03

+0

是否可以刷新元素(例如,绑定源,数据适配器,表)以使Gridview再次显示正确的值 - 而无需重新加载数据?预先感谢答案:-) – Chris 2013-04-05 12:14:51