DataGrid使用SQLDataAdapter更新问题

时间:2009-09-22 13:49:03

标签: c# datagridview

我有一个很好的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>

我在这里忘记的任何想法?每个输入都表示赞赏!

2 个答案:

答案 0 :(得分:2)

dataGridView.EndEdit();
bSource.EndEdit();
dAdapter.Update(dTable);

作品!

经过漫长的搜索,我终于找到了一条线索:

Kudos - > .NET WinForms End Current Edit

答案 1 :(得分:0)

由于您绑定到数据表,因此行具有rowstate(原始,已修改)。当在网格中使用in build edit函数时,这会将行状态设置为已修改,可能使用您的方法以编程方式更新单元格,而不是将基础源数据路由属性设置为已修改,或者甚至更改甚至不更改它的值。