2010-01-14 76 views
3

我有一个datagridview。我读了一个XML文件并将数据绑定到gridview。我更改xml并将其另存为另一种形式。所以我重读XML文件,并将其绑定到gridview。数据表获取更新的值。但是网格没有被更新,直到我关闭并再次打开应用程序。怎么做?用更新的数据更新数据网格视图

谢谢。

问候, Raghavendra

#1

是否有一个的DataGridView数据绑定()或重新绑定()?我这样设置数据源 -

dvMoviesList.DataSource = dtMovies; 

如果我添加任何新行dtMovies表,并重新设置数据源,它是越来越体现。但是,如果我编辑任何现有的行的值,并重新分配数据源它不会得到反映,直到我关闭并再次打开该应用程序。有任何想法吗?

谢谢。

+0

请添加一些代码,看看实际发生了什么...... – tzup 2010-01-14 12:42:00

回答

9

我想你需要在DataGridView和DataTable之间放置一个BindingSource。

DataGridView _dgv = new DataGridView(); 
BindingSource _bs = new BindingSource(); 
DataTable _dt = new DataTable(); 
. 
. 
. 
_dgv.DataSource = _bs; 
_bs.DataSource = _dt; 

现在,每当_dt得到更新,BindingSource的应该刷新的DataGridView的照顾,你不应该担心再设置DataSource属性。可以在InitializeComponent()方法(设计器),表单的构造函数或Form.Load事件处理函数中设置数据源属性。

+0

*答案*! - 对不起,因为未能在赏金结束前标记它:( – NLV 2010-02-23 04:54:53

+0

Omg老兄,那有2个upvotes有一段时间会自动给我一半奖金!有人把它拿走了! 我很高兴你找到你的答案....请将其标记为已接受的答案,以便至少获得额外的15分。 – Ken 2010-02-23 15:23:28

+0

现在我无法将其标记为答案,我没有得到刻度标记,如何将其标记为答案? – NLV 2010-02-24 14:10:56

0

你试过吗?

dvMoviesList.Refresh(); 
+0

我已经试过这个没有运气。 – NLV 2010-02-10 05:02:33

+0

我有同样的问题,并试过这个,它不起作用 – PlantationGator 2013-06-03 18:19:43

0

所有你需要的是数据绑定您的数据源就这样

ArrayList list = new ArrayList(); 
list = YourXMLContent.GetItems(); 
GridView1.datasource = list; // you can use you DataTable instead of list 
GridView1.update(); 
Gridview1.invalidate(); 

其所有。

1

我确定我即将提出的建议不是正确的方法,但我遇到了同样的问题,主要是作为ASP.NET开发人员,而没有在winforms中做过多少工作,我发现的唯一解决方案是设置数据源为NULL,然后重新绑定数据。

示例: this.dataGridView.DataSource = null; this.dataGridView.DataSource = myDataSource;

要验证由Nasser推荐的解决方案作为解决方案,我似乎并不正确,即使它可行。

0

仅供参考:我注意到将DataSource设置为DataSet与DataTable之间的区别。将它设置为一个DataSet不会导致网格刷新,即使它只包含一个表。但是,将它设置为DataSet中的DataTable将导致网格正确刷新。

顺便说一句,我设置DataSource属性在与DataGridView关联的中间BindingSource对象中,而不是在DataGridView本身中。不确定这是否重要。

这可能只与问题相切,因为问题中的DataSource是XML,而不是DataSet。然而,其他与我的问题可能会碰到这个话题(如我一样),所以我发布了这个。