C# c如何在添加记录时刷新数据网格

C# c如何在添加记录时刷新数据网格,c#,sql,datagridview,C#,Sql,Datagridview,添加记录后,刷新数据网格时遇到问题。我试过其他教程中的一些东西,但无法让它工作或找出我的错误 提前谢谢 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(constring); SqlDataAdapter da = new SqlDataAdapter(); da.In

添加记录后,刷新数据网格时遇到问题。我试过其他教程中的一些东西,但无法让它工作或找出我的错误

提前谢谢

 private void btnAdd_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(constring);
            SqlDataAdapter da = new SqlDataAdapter();
            da.InsertCommand = new SqlCommand(cmdInsert, con);



            try
            {
                if (isvalid(textEmail.Text))
                {
                    da.InsertCommand.Parameters.Add("@firstName", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@firstName"].Value = textFirstName.Text.Trim();
                    da.InsertCommand.Parameters.Add("@surname", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@surname"].Value = textSurname.Text.Trim();
                    da.InsertCommand.Parameters.Add("@email", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@email"].Value = textEmail.Text.Trim();
                    da.InsertCommand.Parameters.Add("@phone", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@phone"].Value = textPhone.Text.Trim();
                    da.InsertCommand.Parameters.Add("@mobile", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@mobile"].Value = textMobile.Text.Trim();

                    con.Open();
                    da.InsertCommand.ExecuteNonQuery();
                    MessageBox.Show("Customer Added");
                    con.Close();
                    clearboxes();
                    customerDataSet.Clear();
                    dataGridView1.DataSource = null;
                    customerTableAdapter.Fill(customerDataSet.Customer);
                    dataGridView1.DataSource = customerDataSet.Customer;


                }
                else
                {
                    textEmail.BackColor = Color.Red;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());

            }
        }

您能详细说明一下为什么要刷新datagrid吗? 是的,刷新和指定您的可能有很多原因,这将有助于我们回答您的问题

根据我到目前为止的理解,我可以建议您在标记要添加到网格的记录的语句之后添加希望执行的操作/函数。

应该有一个函数,该函数将在您刚刚插入记录的特定表上具有select语句


在每次插入/更新/删除操作后调用该函数,该操作将为您提供数据库中的更新数据。

对于遇到类似问题的其他人,我就是这样设法解决的。另外,我不是专家,所以他们的方法可能更简单/更好,但这里是代码,感谢大家的投入

 public void binddata()
        {

            try
            {
                customerDataSetBindingSource.DataSource = cmdselect;
                dataGridView1.DataSource = customerDataSetBindingSource;

                SqlConnection con = new SqlConnection(constring);
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(cmdselect, con);

                DataTable dt = new DataTable();
                dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
                da.Fill(dt);
                dataGridView1.DataSource = dt;


                MessageBox.Show("Data Updated");
                con.Close();

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }



        private void btnAdd_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(constring);
            SqlDataAdapter da = new SqlDataAdapter();
            da.InsertCommand = new SqlCommand(cmdInsert, con);



            try
            {
                if (isvalid(textEmail.Text))
                {
                    da.InsertCommand.Parameters.Add("@firstName", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@firstName"].Value = textFirstName.Text.Trim();
                    da.InsertCommand.Parameters.Add("@surname", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@surname"].Value = textSurname.Text.Trim();
                    da.InsertCommand.Parameters.Add("@email", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@email"].Value = textEmail.Text.Trim();
                    da.InsertCommand.Parameters.Add("@phone", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@phone"].Value = textPhone.Text.Trim();
                    da.InsertCommand.Parameters.Add("@mobile", SqlDbType.VarChar);
                    da.InsertCommand.Parameters["@mobile"].Value = textMobile.Text.Trim();

                    con.Open();
                    da.InsertCommand.ExecuteNonQuery();
                    MessageBox.Show("Customer Added");
                    con.Close();
                    clearboxes();
                    binddata();

                }
                else
                {
                    textEmail.BackColor = Color.Red;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());

            }
        }

从有关DataGrid.DataSource的MSDN文档中:在运行时,使用SetDataBinding方法设置DataSource和DataMember属性。也许你应该试试这个…我只是想在datagrids信息发生更改时更新它,即添加删除更新,它将填充实时数据。因此,调用包含Select*from表的cmdselect?是的,您可以创建一个单独的函数,如BindGrid,它将使用Select命令,并在每次插入/更新/删除操作后调用它,即在触发ExecuteOnQuery命令后。谢谢,现在有更多的意义了