如何刷新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; } }