我有一个表单,其中包含基于 MySQL 数据库中的数据集和 tableadapter 的过滤数据网格视图(隐藏标记为“关闭”的条目)。我被困在一个涉及启动对话框表单的部分上,该表单包含另一个基于相同数据集的数据网格视图,该数据集显示表中的所有条目。我希望能够使用复选框列标记那些“关闭”的选择,单击“关闭这些记录”按钮,关闭该对话框并将这些更改反映在过滤的 datagridview 中。
我尝试了多种方法来实现这一点,但没有运气。基本上,当我返回过滤后的 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刷新是平安无事的。调试时,当关闭解释空数据网格视图的对话框时,整个数据集为空。有趣的是,当对话框关闭并且没有进行任何更改时,第一种形式的过滤数据网格仍然完好无损。尝试了其他几种不同的方法,但没有可行的结果。
我省略了设计者声明,但如果需要澄清,我可以编辑问题。
我必须忽略一些简单的事情。这甚至是正确的方法吗?任何帮助表示赞赏。