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

Winforms 使用更新的数据更新datagrid视图,winforms,datagridview,Winforms,Datagridview,我有一个datagridview。我读取一个xml文件并将数据绑定到gridview。我更改xml并将其保存为另一种形式。因此,我重新读取xml文件并将其绑定到gridview。datatable正在获取更新的值。但是在我关闭并再次打开应用程序之前,网格不会得到更新。怎么做 多谢各位 问候,, 拉加文德拉 #1 DataGridView有Databind()或Rebind()吗?我这样设置数据源- dvMoviesList.DataSource = dtMovies; 如果我向dtMovies

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

多谢各位

问候,, 拉加文德拉

#1

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

dvMoviesList.DataSource = dtMovies;
如果我向dtMovies表中添加任何新行并再次设置数据源,它将得到反映。但是,如果我编辑任何现有行的值并重新分配数据源,直到我关闭并再次打开应用程序,它才会得到反映。有什么想法吗

谢谢。

你试过这个吗

dvMoviesList.Refresh();

我认为需要在DataGridView和DataTable之间放置BindingSource

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

现在,无论何时更新
\u dt
,BindingSource都应该负责刷新DataGridView,您不必担心重置任何数据源属性。数据源属性可以在
InitializeComponent()
方法(设计器)、表单的构造函数或表单.Load事件处理程序中设置。

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

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

这就是全部。

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

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


我将验证Nasser推荐的解决方案,即我拥有的解决方案,尽管它有效,但似乎并不正确。

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

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


这可能与问题无关,因为问题中的数据源是XML,而不是DataSet。但是,其他与我有问题的人可能会碰到这个话题(就像我一样),所以我还是发布了这个话题。

请添加一些代码,看看到底发生了什么……回答!-很抱歉在悬赏结束前没有标记它:(天哪,老兄,那有一段时间有两张赞成票,这会自动给我一半的奖金!有人拿走了!我很高兴你找到了你的答案……请把它标在被接受的答案上,这样我至少可以多得到15票。我现在不能把它标为答案。我没有得到勾号。如何把它标为答案?不管怎样,你可以悬赏结束后,我不会接受答案。关于使用
BindingSource
的建议,是否有合适的MSDN文章?