gpt4 book ai didi

c# - MySQL 从 C# 中修改的 datagridview 更新

转载 作者:行者123 更新时间:2023-11-29 13:50:52 25 4
gpt4 key购买 nike

我有一个表单,其中包含基于 MySQL 数据库中的数据集和表适配器的过滤数据 GridView (隐藏标记为“已关闭”的条目)。我陷入了涉及启动对话框表单的一个部分,该对话框表单包含另一个基于同一数据集的 datagridview,该数据集显示表中的所有条目。我希望能够使用复选框列标记那些“已关闭”的选择,单击“关闭这些记录”按钮,关闭该对话框并将这些更改反射(reflect)在过滤后的数据 GridView 中。

我尝试了多种实现此方法的方法,但没有成功。基本上,当我返回到过滤后的 datagridview 时,最接近的尝试导致了空数据集......

我过滤后的datagridview填充在这里:

this.dtClientTableAdapter.FillBy(this.DS.dtClient);

对话框在此处启动:

private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
CloseAgreement dlgCloseAgree = new CloseAgreement();
dlgCloseAgree.ShowDialog();
refreshRecords();
}

未过滤的datagridview显示在对话框中并填充在这里:

this.dtClientTableAdapter.Fill(this.DS.dtClient);

要设置更改,请使用 RowValidated 事件:

private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e)
{
DataTable changes = ((DataTable)dataGridView1.DataSource).GetChanges();

if (changes != null)
{
MySqlCommandBuilder mcb = new MySqlCommandBuilder(mySqlDataAdapter);
mySqlDataAdapter.UpdateCommand = mcb.GetUpdateCommand();
mySqlDataAdapter.Update(changes);
((DataTable)dataGridView1.DataSource).AcceptChanges();
}
}

在该对话框关闭之前,一切似乎都工作正常。当返回到第一个表单中过滤后的 datagridview 时,datagridview 是空的,并且通过重新填充 tableadapter 进行刷新是平安无事的。调试时,关闭对话框时整个数据集为空,这解释了空的 datagridview。但有趣的是,当对话框关闭且未进行任何更改时,第一种表单中的过滤数据网格仍然完好无损。尝试了其他几种不同的方法,但没有任何可行的结果。

我省略了设计者声明,但如果需要澄清,我可以编辑问题。

我一定忽略了一些简单的事情。这是正确的方法吗?任何帮助表示赞赏。

最佳答案

我明白了...第一个 dgv 更像是开放记录的仪表板。第二个 dgv 是数据库中存储的所有数据的列表。我希望能够“打开”和“关闭”记录,并且在仪表板中看不到“关闭”的记录,但仍然希望能够在某个时候重新打开它们,并跟踪所有以前关闭的记录。我的问题是我试图对两个 dgv 使用相同的数据集。创建独立数据集并查询数据库后,我就能够进行更改、更新并返回仪表板以查看更改。对我来说这只是一个巨大的错误。这是我创建的第一个 mysql 数据驱动应用程序,因此对 mysql 连接器进行了一些主要学习。不过还是谢谢你的帮助。

关于c# - MySQL 从 C# 中修改的 datagridview 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16695029/

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