【发布时间】: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