我有一个很好的litte DataGridView,它由一个按钮和一个SQLDataAdapter以及相应的saveButton加载/填充。
private void loadButton_Click(object sender, EventArgs e)
{
String connString = conStringComboBox.Text;
String query = queryStringComboBox.Text;
dAdapter = new SqlDataAdapter(query, connString);
SqlCommandBuilder cBuilder = new SqlCommandBuilder(dAdapter);
dTable = new DataTable();
dAdapter.Fill(dTable);
bSource = new BindingSource();
bSource.DataSource = dTable;
dataGridView.DataSource = bSource;
}
private void saveButton_Click(object sender, EventArgs e)
{
dAdapter.Update(dTable);
}
每当我在dataGridView中编辑某些内容并单击“保存”时,一切都只是极好的。 SQL Server上正确单元格中的值会更新。
但我实施了一个小编辑器以获得更好的概述。 Cell X的值在那里被更改,它返回到DataGridview:
dataGridView.SelectedCells[0].Value = exampleString;
DataGridView相应更新,我点击保存 - 更新得到顺利执行,但新值显然没有提交给SQL Server,因为只要我加载同一个表,它就会再次显示旧值。 / p>
我在这里忘记的任何想法?每个输入都表示赞赏!
答案 0 :(得分:2)
dataGridView.EndEdit();
bSource.EndEdit();
dAdapter.Update(dTable);
作品!
经过漫长的搜索,我终于找到了一条线索:
Kudos - > .NET WinForms End Current Edit
答案 1 :(得分:0)
由于您绑定到数据表,因此行具有rowstate(原始,已修改)。当在网格中使用in build edit函数时,这会将行状态设置为已修改,可能使用您的方法以编程方式更新单元格,而不是将基础源数据路由属性设置为已修改,或者甚至更改甚至不更改它的值。