无法刷新DataGridView的源代码

时间:2011-04-08 05:16:51

标签: c# windows datagridview dataset

我知道这个问题被问了几百万次,但我从那里使用了很多建议但它仍然不适合我。这是我的尝试:

    private void Apply_Click(object sender, EventArgs e)
    {
        Form addIncForm = DataProcessing.newIncident(Incident.Text);
        addIncForm.FormClosed += (s, ex) =>
        {
            this.inciView.DataSource = null;
            this.inciView.DataSource = this.incidentBindingSource;
            this.inciView.Invalidate();
            this.inciView.Refresh();
            this.inciView.Parent.Refresh();
        };
        addIncForm.Show();
    }

只有当我关闭并打开“这个”表格时,我才能看到inciView的变化。为什么这个硬刷新(没有方法)不起作用?以及如何刷新它?

我想我必须以某种方式强制更新DataSet。

2 个答案:

答案 0 :(得分:1)

有两种方法可行:

  1. 使用ShowDialog()打开它,制作用于编辑数据模式的表单。调用ShowDialog()后添加代码以重新查询并将DataGridView重新绑定到其数据源。

  2. 在数据输入表单中添加一个事件,通知监听器您的数据库已更新。打开数据输入表单的表单订阅此事件以及在事件触发重新查询并重新绑定DGV时运行的代码。

  3. 当我说requery并重新绑定你的DGV时,我的意思是做你现在正在做的任何事情来将数据加载到你的DGV中(即查询数据库和设置数据源)。

    在第一种方法中,以模态方式显示数据输入表将有效地停止执行主表单,直到用户完成数据输入表单。您还可以让您的数据输入表单返回DialogResult,指示用户是否进行了任何更改而不是取消。如果是这样(比如数据输入表单返回DialogResult.OK),您可以运行DGV刷新代码。

    在第二种方法中,您的数据输入表格告诉用户数据已更新。

答案 1 :(得分:1)

假设Control已绑定到数据库 这可能会有所帮助,

从DataSet Designer:

  1. 右键单击TableAdapter,然后选择“配置...”
  2. 按next,确保选中“填写数据表”
  3. 按next / Finish。
  4. 在您的代码中添加:

    myDataSet.AcceptChanges();
    myBindingSource.EndEdit();
    myTableAdapter.Fill(myDataSet.Table1);
    

    自动刷新绑定控件。

    前两个陈述可能是多余的,但它对我有用。 :)