使用更新的数据更新datagrid视图

时间:2010-01-14 07:30:03

标签: winforms datagridview

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

谢谢。

此致 Raghavendra

#1

DataGridView是否有Databind()或Rebind()?我像这样设置数据源 -

dvMoviesList.DataSource = dtMovies;

如果我向dtMovies表中添加任何新行并再次设置数据源,则会反映出来。但是,如果我编辑任何现有行的值并重新分配数据源,则在我关闭并再次打开应用程序之前,它不会被反映出来。有什么想法吗?

谢谢。

5 个答案:

答案 0 :(得分: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的构造函数或Form.Load事件处理程序中设置DataSource属性。

答案 1 :(得分:1)

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

实施例: this.dataGridView.DataSource = null; this.dataGridView.DataSource = myDataSource;

要验证纳赛尔推荐的解决方案,即使它有效,我的解决方案似乎也不正确。

答案 2 :(得分:0)

你试过这个吗?

dvMoviesList.Refresh();

答案 3 :(得分:0)

您只需要像这样对数据源进行数据绑定

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

全部。

答案 4 :(得分:0)

仅供参考:我注意到将DataSource设置为DataSet与DataTable之间存在差异。将其设置为DataSet不会导致网格刷新,即使它只包含一个表也是如此。但是,将其设置为DataSet内的DataTable会导致网格正确刷新。

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

这可能只与问题切线相关,因为问题中的DataSource是XML,而不是DataSet。但是,我的问题的其他人可能会碰到这个话题(正如我所做的那样),所以无论如何我都发布了这个。