我在一个使用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();
}
以上做了它需要的东西,这是伟大的。我只需要一些刷新的方法,而不必让最终用户重新排序列来实际显示刷新的数据。
答案 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;
}