如何刷新c#dataGridView更新后?

我有一个dataGridView当我点击任何行打开表单来更新行数据,但结束更新后,更新表单closures,但dataGridView数据不更新

我怎样才能做到这一点 ?

重新绑定你的DatagridView的源。

DataGridView dg1 = new DataGridView(); dg1.DataSource = src1; // Update Data in src1 dg1.DataSource = null; dg1.DataSource = src1; 

BindingSource是唯一不需要第三方ORM的方法,起初可能看起来很长,但BindingSource的一个更新方法的好处是非常有用的。

如果你的源代码是例如用户string的列表

 List<string> users = GetUsers(); BindingSource source = new BindingSource(); source.DataSource = users dataGridView1.Datasource = source; 

那么当你完成编辑只是更新你的数据对象,无论是像这里DataTable或用户string列表和BindingSource ResetBindings ;

 users = GetUsers(); //Update your data object source.ResetBindings(false); 

我不知道这是否真的被解决了,但是通过查看所有其他答案,似乎没有什么明显的。 我发现要做到这一点的最好方法是将相同的代码放在一个方法中,并将其传递给表单的datagridview ,如下所示:

 public void ConnectAndPopulateDataGridView(DataGridView dataGridView) { } 

该方法中的代码与用于最初填充datagirdview的代码datagirdview ,除了datagridview名称更改为您在方法中调用的任何名称。

现在这个方法在你的父窗体中被调用。

子窗体通过.ShowDialog()方法启动,然后调用该方法,以便在子窗体closures后立即调用它,如下所示:

 ChildForm.ShowDialog(); ConnectAndPopulateDataGridView(dataGridView1); 

你只需要重新定义数据源 。 所以,如果你有例如DataGridView的DataSource包含a,b,ic:

 DataGridView.DataSource = a, b, c 

突然之间,你更新数据源,所以你只有一个和B,你需要重新定义你的数据源:

 DataGridView.DataSource = a, b 

我希望你觉得这个有用。

谢谢。

你可以使用SqlDataAdapter来更新DataGridView

  using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Table", conn)) { DataTable dt = new DataTable(); ad.Fill(dt); dataGridView1.DataSource = dt; } }