用户对单元格进行更改。
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);
}
}
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 documentation上的CellEndEdit
:
当编辑模式停止当前所选单元格时发生。
并举例说明如何在错误验证的情况下捕获此事件触发 - 这就是它停止的原因:不是因为用户已完成,而是因为发生了验证事件。另一方面,MSDN documentation上的CellValueChanged
说
提交用户指定的值时会发生DataGridView.CellValueChanged事件,这通常在焦点离开单元格时发生。
这是你的情况。干杯!