gpt4 book ai didi

c# - WinForm 尝试从 CellValueChanged 事件提交 DataGridView 更改

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:36 26 4
gpt4 key购买 nike

我有 2 个用 C# 4.0 编写的表单。 FormA 有一个 DataGridView,通过 DataAdapter 和 BindingSource 连接到 MS SQL 数据库。网格有一个复选框。当用户勾选复选框时,调用 FormB。 FormB 有一个"is"/“否”按钮。如果来自 FormB 的 DialogResult 为"is",数据库应该更新为复选框的新值——用户无需在 FormA 上按下任何其他项目。

这是一些伪代码:

FormA:

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DialogResult dialogRes = new FormB().ShowDialog();
if (dialogRes == DialogResult.Yes)
{
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
dataGridView1.EndEdit();
table.EndInit();
dataAdapter.Update(table);
}
}

结果没有保存到数据库中。如果我将相同的“保存/更新”功能放在按钮事件上,它就可以正常工作。所以一定是因为 CellValueChanged 事件需要完成(并且可能需要触发其他事件)才能成功提交更改!?

请帮忙,我要疯了......

编辑:使用 CellEndEdit 具有相同的效果,但没有效果。我已经设置了 SqlCommandBuilder,并且数据库在除上述情况之外的所有其他情况下都得到了正确更新

最佳答案

您需要查看 MSDN 上关于 sql command Builder 的这个示例。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx

为了让您的适配器使用 Update() 方法,它需要设置命令来执行任务。命令生成器用于在填充数据时从给定的 Select 命令生成这些命令:-

public static DataSet SelectSqlRows(string connectionString,
string queryString, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

connection.Open();

DataSet dataSet = new DataSet();
adapter.Fill(dataSet, tableName);

//code to modify data in DataSet here

builder.GetUpdateCommand();

//Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet, tableName);

return dataSet;
}
}

关于c# - WinForm 尝试从 CellValueChanged 事件提交 DataGridView 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13821592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com