如何在更改dataGridView中的单元格值后更新数据源中的更改?

问题描述 投票:1回答:1

用户对单元格进行更改。 CellEndEdit事件被触发。 在Save ()方法中,更改显示在adapter.Update (table_2);行中。 更改不会显示在数据库中(更改不会保存到数据库中)。 如果用户使用按钮调用Save ()方法,则更改将显示在数据库中(在数据源表dataGridView中)。 题。 如何在更改dataGridView中的单元格值后更新数据源中的更改?

我的守则

 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            i++;
            Save();
            richTextBox1.Text += i + " Event - `CellEndEdit` \r\n";
        }


     public DataTable CreateCmds()
            {
                table_2 = new DataTable();
                try
                {
                    string connectionString = @"Data Source=.\SQLEXPRESS1;Initial Catalog=Prb;Integrated Security=True";              

                    string queryString = "SELECT * FROM tbl_01_Groups";

                    using (SqlConnection connection = new SqlConnection(connectionString))
                    {
                        adapter = new SqlDataAdapter();
                        adapter.SelectCommand = new SqlCommand(queryString, connection);
                        SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

                        connection.Open();

                        adapter.Fill(table_2);
                    }

                }
                catch (Exception ex)
                {

                    string s = ex.Message;
                    string t = ex.StackTrace;
                    // throw;
                }

                return table_2;
            }

            public void Save()
            {
                string connectionString = @"Data Source=.\SQLEXPRESS1;Initial Catalog=Prb;Integrated Security=True";

                string queryString = "SELECT * FROM tbl_01_Groups";

                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    adapter = new SqlDataAdapter();
                    adapter.SelectCommand = new SqlCommand(queryString, connection);
                    SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

                    connection.Open();

                    adapter.Update(table_2);
                }
            }

enter image description here

Update_1 当我使用CellValueChanged事件时,会发生同样的事情。 CellValueChanged事件被触发。 在Save ()方法中,更改显示在adapter.Update (table_2);行中。 更改不会显示在数据库中(更改不会保存到数据库中)。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            i++;
            Save();
            richTextBox1.Text += i + " Event - `CellValueChanged` \r\n";
        }
c# winforms ado.net
1个回答
1
投票

MSDN documentation上的CellEndEdit

当编辑模式停止当前所选单元格时发生。

并举例说明如何在错误验证的情况下捕获此事件触发 - 这就是它停止的原因:不是因为用户已完成,而是因为发生了验证事件。另一方面,MSDN documentation上的CellValueChanged

提交用户指定的值时会发生DataGridView.CellValueChanged事件,这通常在焦点离开单元格时发生。

这是你的情况。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.