我正在用C#编写Winforms应用程序,该应用程序使用户可以使用datagridview编辑和更新数据库。
问题是,我无法使其正常工作。我唯一要实现的就是更新datagridview所显示的内容,但是当我进入数据库表时,数据没有任何变化。我搜索了很多讨论该问题的站点,但对我来说仍然没有任何用处。
到目前为止我尝试过的事情:
Copy to Output Directory
Copy if newer
dataAdapter.Update((DataTable)bindingSource1.DataSource)
dataAdapter.update(...)
这是我的代码:
public Form1() { InitializeComponent(); GetData("SELECT * FROM Table1"); } void GetData(string selectCommand) { SqlConnection conn = new SqlConnection(Properties.Settings.Default.NewDBTESTConnectionString); dataAdapter = new SqlDataAdapter(selectCommand, conn); commandBuilder = new SqlCommandBuilder(dataAdapter); table = new DataTable(); dataAdapter.Fill(table); bindingSource1.DataSource = table; dataGridView1.DataSource = bindingSource1; } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { dataAdapter.Update((DataTable)bindingSource1.DataSource); }
如果不调用bindingSource1.EndEdit基础数据表,则不会看到任何更改,因此Update命令没有任何要更新的内容。
bindingSource1.EndEdit
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { bindingSource1.EndEdit(); DataTable dt = (DataTable)bindingSource1.DataSource; // Just for test.... Try this with or without the EndEdit.... DataTable changedTable = dt.GetChanges(); Console.WriteLine(changedTable.Rows.Count); int rowsUpdated = da.Update(dt); Console.WriteLine(rowsUpdated); }