dataGridView 不会反映更新的数据集
dataGridView won't reflect updated dataset
在我的主窗体上,我有以下方法:
private void updateSet()
{
dsManager.fillPeriodSet();
dataGridView1.DataSource = null;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
}
此方法在表单初始化时从构造函数中调用,并在使用附加 "period" 更新数据集后再次调用。它完美地工作,第一次加载表单时,更改数据集的功能也可以正常工作,我可以确认新值已通过检查器成功添加 window.
第二次调用时,即使数据集已正确更新,也没有任何反应。如果我关闭表单并重新 运行,它将再次正确显示,包括新添加的 "period".
我知道这个论坛和其他论坛上还有很多其他类似的问题,我已经尝试了至少 10 个。似乎对其他人有用的东西在这里都不起作用。
过去有没有人遇到过这个问题?
当应用程序处于活动状态且有多个表单时,活动表单是具有输入焦点的表单。不可见的表单不能成为活动表单。激活可见表单的最简单方法是单击它或使用适当的键盘组合。
在 c# windowsApplication 中你有一个名为 Form_Activate
的事件
你可以处理这个事件和运行你的代码当这个事件发生时。
private void Form1_Activated(object sender, System.EventArgs e)
{
//your code :)
}
因此,在尝试了大约一周左右的代码变体之后,我终于在做出以下更改时让一切正常工作:
dataGridView1.DataSource = itemSet1;
dataGridView1.DataMember = "items_formatted";
到
dataGridView1.DataSource = itemSet1.Tables["items_formatted"];
//dataGridView1.DataMember = "items_formatted";
显然,DataMember
属性发生了一些问题,导致 DataGridView 无法刷新。即使当我明确清除它 (dataGridView1.DataMember = null;
) 并且它在 Locals window 中显示为已清除时,它仍然具有某种残留效果,导致无法重新加载数据集。
非常令人沮丧,如果有人知道这是为什么,我很想知道。否则我希望这个 question/answer 至少可以帮助处于相同位置的其他人。
更新:
作为额外参考,我原来问题中的代码更新自:
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
至:
dataGridView1.DataSource = dsManager.mainSet.Tables["nice_table"];
现在也可以了。我的任何表单都不需要额外的 clear/updating/restructuring 代码。
在我的主窗体上,我有以下方法:
private void updateSet()
{
dsManager.fillPeriodSet();
dataGridView1.DataSource = null;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
}
此方法在表单初始化时从构造函数中调用,并在使用附加 "period" 更新数据集后再次调用。它完美地工作,第一次加载表单时,更改数据集的功能也可以正常工作,我可以确认新值已通过检查器成功添加 window.
第二次调用时,即使数据集已正确更新,也没有任何反应。如果我关闭表单并重新 运行,它将再次正确显示,包括新添加的 "period".
我知道这个论坛和其他论坛上还有很多其他类似的问题,我已经尝试了至少 10 个。似乎对其他人有用的东西在这里都不起作用。
过去有没有人遇到过这个问题?
当应用程序处于活动状态且有多个表单时,活动表单是具有输入焦点的表单。不可见的表单不能成为活动表单。激活可见表单的最简单方法是单击它或使用适当的键盘组合。
在 c# windowsApplication 中你有一个名为 Form_Activate
你可以处理这个事件和运行你的代码当这个事件发生时。
private void Form1_Activated(object sender, System.EventArgs e)
{
//your code :)
}
因此,在尝试了大约一周左右的代码变体之后,我终于在做出以下更改时让一切正常工作:
dataGridView1.DataSource = itemSet1;
dataGridView1.DataMember = "items_formatted";
到
dataGridView1.DataSource = itemSet1.Tables["items_formatted"];
//dataGridView1.DataMember = "items_formatted";
显然,DataMember
属性发生了一些问题,导致 DataGridView 无法刷新。即使当我明确清除它 (dataGridView1.DataMember = null;
) 并且它在 Locals window 中显示为已清除时,它仍然具有某种残留效果,导致无法重新加载数据集。
非常令人沮丧,如果有人知道这是为什么,我很想知道。否则我希望这个 question/answer 至少可以帮助处于相同位置的其他人。
更新:
作为额外参考,我原来问题中的代码更新自:
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
至:
dataGridView1.DataSource = dsManager.mainSet.Tables["nice_table"];
现在也可以了。我的任何表单都不需要额外的 clear/updating/restructuring 代码。