C# 如何在向表中添加新行后更新datagridview的行列表

C# 如何在向表中添加新行后更新datagridview的行列表,c#,.net,datagridview,C#,.net,Datagridview,我有一个datagridview,它在表单的load事件上填充了一个表集合,我还有一个由用户填充的表单,它向table onclick事件中添加新行,我想在向表中添加新行后更新datagridview,我使用绑定到bindingdatasource的sqladapter。 这是密码 private void button1_Click(object sender, EventArgs e) { connection.Open();

我有一个datagridview,它在表单的load事件上填充了一个表集合,我还有一个由用户填充的表单,它向table onclick事件中添加新行,我想在向表中添加新行后更新datagridview,我使用绑定到bindingdatasource的sqladapter。 这是密码

       private void button1_Click(object sender, EventArgs e)
        {
        connection.Open();
         string nv = textBox7.Text.Trim().Replace(',', '.');
         //
        string sql="";
        sql = "INSERT INTO Employe(id_cnss, nom, prenom, adresse,     tel,email,mt_heur_travail, titre)     VALUES('"+textBox1.Text.ToString().Trim()+"','"+textBox2.Text.ToString().Trim()+"','"+textBox3.Text.ToString().Trim()+"','"+richTextBox1.Text.ToString().Trim()+"','"+textBox4.Text.ToString().Trim()+"','"+textBox5.Text.ToString().Trim()+"',"+nv+",'"+textBox6.Text.Trim()+"')";
      //  sql = "UPDATE Employe SET id_cnss ='" +  + "' , nom ='" +  + "', prenom ='" +  + "', adresse ='" +  + "', tel ='" +  + "', email ='" + + "', mt_heur_travail =" +  + ", titre ='" +  + "'  where id_cnss=" + index;
        c = new SqlCommand(sql, connection);
        c.CommandText = sql;
       // IAsyncResult res;
       int ex = c.ExecuteNonQuery();
       if (ex != null)
       {
           MessageBox.Show("employé ajouté");
           //dataGridView1.Rows.Clear();
           //DataTable table = (DataTable)dataGridView1.DataMember;
           adapter = new SqlDataAdapter("select * from employe  where       id_emp=IDENT_CURRENT('EMPLOYE')", connection);
           adapter.Fill(dTable);
           //adapter.Update(dTable);
           dataGridView1.Refresh();
       }
            connection.Close();
    }
这段代码将表中的所有行添加到datagridview中,但我只需要将最新添加的行添加到数据库中 brievely,当用户单击“添加”下的

我希望新行将添加到datagridview
提前感谢您

数据表
的更改未反映在
数据网格视图
中的问题非常常见。问题是大多数数据表和表适配器实现不会引发
ListChanged
事件,而
DataGridView
会监听这些事件,以了解何时更新自身

.Refresh()无法解决此问题,因为它只重新绘制客户端区域,而不重新查询数据源-底层的
DataGridView
不知道任何更改,因此它会像以前一样重新绘制

通常的修复方法是重置数据源

dataGridView1.DataSource = null;
// Your datatable goes in the place of newDataSource
dataGridView1.DataSource = newDataSource;
您还可以执行以下操作:

dataGridView1.DataSource = typeof(List);
dataGridView1.DataSource = newDataSource;
这将保留所有自动生成的列


您也可以通过使用
BindingSource
来解决这个问题-它本身可能无法解决问题,因为绑定源也依赖于列表更改事件,但这可能意味着可以避免网格中出现任何奇怪的闪烁。

不清楚您的问题是什么。您是否在问为什么数据库中的新行不会显示在datagridview中?或者如何将添加到datagridview的行添加到数据库?还有其他问题吗?我想问为什么数据库中的新行(添加的onclick事件)既没有添加到datagridview中,也没有添加到datagridview中。adapter.fill(dtable)添加数据库的所有行,但我只需要添加新行感谢您的编辑-因此,您的问题似乎是,当您使用第二个表单向数据源添加行时,datagridview不会反映这些更改,即使使用.Refresh()命令也是如此?我认为你现在不能评论(因为名声不好),所以也许你可以更新你的问题。如果这是你的问题,那么很容易解决。