【问题标题】:Refreshing DataGridView after Backgroundworker?在Backgroundworker之后刷新DataGridView?
【发布时间】:2017-04-03 12:20:25
【问题描述】:

我有一个表单中的 DataGridView,它使用 Backgroundworker 加载数据和一个 pleasewait 表单以保持 UI 响应并显示 gif,以便用户可以看到项目仍在工作。

完成后,我需要以某种方式用新数据刷新 DataGridView。如果我手动单击标题对我的 ASC 或 DESC 进行排序,那么它会显示最新数据。请问刷新此网格的最佳方法是什么或如何?

    public void btnSearch_Click(object sender, EventArgs e)
    {
        pleaseWait.Show();
        backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        this.TestTableTableAdapter.Fill(this.TestTableData.TestTableTable, txtHotName.Text, ((System.DateTime)(System.Convert.ChangeType(txtDepartFrom.Text, typeof(System.DateTime)))), ((System.DateTime)(System.Convert.ChangeType(txtDepartTo.Text, typeof(System.DateTime)))), ((System.DateTime)(System.Convert.ChangeType(txtBookFrom.Text, typeof(System.DateTime)))), ((System.DateTime)(System.Convert.ChangeType(txtBookTo.Text, typeof(System.DateTime)))));
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        pleaseWait.Hide();
    }

上面做了它需要做的很棒。我只需要了解如何刷新,而不必让最终用户重新排序列以实际显示刷新的数据。

【问题讨论】:

  • 通常我会清除并将信息重新加载到 DataGridView 中,但我很长时间没有使用 DGV,可能有更好的方法。留下来找出答案!
  • 向 DGV 添加数据时,不会自动调用 re-paint 方法。所以诀窍是设置datagridview1.DataSource = null,然后返回实际的数据源。

标签: c# datagridview


【解决方案1】:

继jdweng的评论;

添加数据时不会自动调用 re-paint 方法 到 DGV。所以诀窍是设置datagridview1.DataSource = null, 然后回到实际的数据源。

这为我修复了选项。我的 gif 仍在旋转,并且 UI 会随着我的标准发生变化而更新。

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        pleaseWait.Hide();
        this.TestTableTableDataGridView.DataSource = null;
        this.TestTableTableDataGridView.DataSource = TestTableTableBindingSource;
    }

【讨论】:

    猜你喜欢
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2013-09-04
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多