dataGridView不会反映更新的数据集

时间:2015-02-01 06:25:25

标签: c# datagridview visual-studio-2013 dataset

在我的主表单上,我有以下方法:

private void updateSet()
{
    dsManager.fillPeriodSet();

    dataGridView1.DataSource = null;

    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = dsManager.mainSet;

    dataGridView1.DataMember = "nice_table";
}

在表单初始化时从构造函数调用此方法,并在使用其他"句点"更新数据集之后再次调用此方法。它首次在表单加载时,改变数据集的功能也可以正常工作,我可以确认通过检查器窗口成功添加了新值。

第二次调用时,即使数据集已正确更新,也不会发生任何事情。如果我关闭表单并重新运行,它将再次正确显示,包括新添加的"期间"。

我知道在这个和其他论坛上有很多其他类似的问题,我已经尝试了至少10个。似乎没有其他人在这里工作。

过去有没有人有过这个问题的经验?

2 个答案:

答案 0 :(得分:0)

当应用程序处于活动状态且具有多个表单时,活动表单是具有输入焦点的表单。不可见的表单不能是活动表单。激活可见表单的最简单方法是单击它或使用适当的键盘组合。

在c #windowsApplication中,你有一个名为Form_Activate的事件

你可以处理这个事件并在发生此事件时运行你的代码。

private void Form1_Activated(object sender, System.EventArgs e)
    {
        //your code :)
    }

答案 1 :(得分:0)

因此,在大约一周左右的时间里玩弄我的代码的每一个可能的变化后,当我做出以下更改时,我终于完成了所有工作:

dataGridView1.DataSource = itemSet1;
dataGridView1.DataMember = "items_formatted";

dataGridView1.DataSource = itemSet1.Tables["items_formatted"];
//dataGridView1.DataMember = "items_formatted";

显然,DataMember属性导致DataGridView无法刷新。即使我明确地清除它(dataGridView1.DataMember = null;)并且它在Locals窗口中显示为已清除,它仍然具有某种残留效果,使得无法重新加载数据集。

非常令人沮丧,如果有人知道为什么这是我想知道的。否则,我希望这个问题/答案至少能帮助处于同一位置的其他人。

更新:

有关其他参考,我的原始问题中的代码已从以下位置更新:

dataGridView1.DataSource = dsManager.mainSet;

dataGridView1.DataMember = "nice_table";

为:

dataGridView1.DataSource = dsManager.mainSet.Tables["nice_table"];

现在也可以。我的任何表格都不需要额外的清除/更新/重组代码。