在Backgroundworker之后刷新DataGridView?

时间:2017-04-03 12:20:25

标签: c# datagridview

我在一个使用Backgroundworker加载数据的表单中有一个DataGridView,并有一个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();
    }

以上做了它需要的东西,这是伟大的。我只需要一些刷新的方法,而不必让最终用户重新排序列来实际显示刷新的数据。

1 个答案:

答案 0 :(得分:0)

继续jdweng的评论;

  

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

这为我修复了选项。当我的标准发生变化时,我的gif仍在旋转,UI也会更新。

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