DatagridView未更新(使用C#Windows应用程序)

DatagridView未更新(使用C#Windows应用程序),c#,datagridview,C#,Datagridview,可能重复: 这是我正在尝试的,但仍然没有更新 con.Open(); SqlDataAdapter da = new SqlDataAdapter("Select * from Table_Name", con); DataTable dt = new DataTable(); da.Fill(dt); da.Update(dt); dataGridview1.DataSource = null; dataGridView1.DataSource = dt; 另外,如果有任何方

可能重复:

这是我正在尝试的,但仍然没有更新

 con.Open();
 SqlDataAdapter da = new SqlDataAdapter("Select * from Table_Name", con);
 DataTable dt = new DataTable();
 da.Fill(dt);
 da.Update(dt);
 dataGridview1.DataSource = null;
 dataGridView1.DataSource = dt;
另外,如果有任何方法使用SQL查询更新DataGridView…。

请尝试以下代码

con.Open();  
SqlDataAdapter da = new SqlDataAdapter("Select * from Table_Name", con);  
Dataset ds = new Dataset();   //changed code from datatable to dataset
da.Fill(ds);  
da.Update(ds);  
dataGridView1.DataSource = ds;
dataGridView1.DataBind(); //databinding done here. this is missing in your code

您需要调试代码,以查看当数据适配器尝试填充数据表时,数据表是否实际填充了数据

在本例中,您应该使用绑定源。这将确保对数据表所做的任何更改都反映到DataGridView对象中

您不需要在数据适配器上调用Update(),只有Fill()就足够了

 Public BindingSource bs = new BindingSource();
 Public DataTable dt = new DataTable();

 SqlDataAdapter da = new SqlDataAdapter("Select * from Table_Name", con);

 Con.Open();

 da.Fill(dt);

 Con.Close();

 bs.DataSource = dt;

 dataGridview1.DataSource = bs;
这样做允许您在内存中过滤/查询DataTable,它将立即反映datagridView中的更改


如果可以在数据表中完成查询,则查询数据库不是一种好的做法

你怎么拒绝批准的编辑?@Jain忽略我的评论,它的mod材料。通常将
DataGirdView
绑定到业务对象数据源,例如
List()
。你可以把逻辑放在GIU中,但我不建议这样做。我们需要更多的信息我认为这是winform,所以
DataBind()
(无论如何,这是一个方法而不是属性)不适合这里-1大胆的假设。它不是
绑定
它的
更新
@jeremy Thompson。它不更新,而是使用新的datatabel值将数据重新绑定到网格。