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

How to update changes in the data source after changing the cell value in the dataGridView?

用户对单元格进行了更改。
CellEndEdit 事件被触发。
Save () 方法中,更改显示在 adapter.Update (table_2); 行中。
数据库中未显示更改(更改未保存到数据库)。

如果用户使用按钮调用Save ()方法,则更改显示在数据库中(在数据源tabledataGridView)。

问题。
如何在更改 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);
                }
            }

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";
        }

MSDN documentationCellEndEdit:

Occurs when edit mode stops for the currently selected cell.

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

The DataGridView.CellValueChanged event occurs when the user-specified value is committed, which typically occurs when focus leaves the cell.

这是你的情况。干杯!