2017-04-03 3 views
0

私は、応答性のUIを維持し、ユーザーが項目がまだ働いている見ることができるようにGIFを表示するには、データとPLEASEWAITフォームをロードするためのBackgroundWorkerを使用して、フォームでのDataGridViewを持っています。Backgroundworkerの後でDataGridViewを更新していますか?

それが完了した後、私は何とか新しいデータで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(); 
    } 

上記は素晴らしいものです。エンドユーザーが実際にリフレッシュされたデータを表示するために列を並べ替える必要がなく、リフレッシュする方法が必要です。のjdwengさんのコメントに続いて

+0

は、通常、私はちょうど明確でのDataGridViewに情報を再ロードするだろうが、私は長い時間でDGVsを使用していないと、それを行うためのより良い方法はおそらくあります。見つけてくつろいでください! –

+1

DGVにデータを追加するときに、再ペイントメソッドが自動的に呼び出されることはありません。だから、トリックはバック実際のデータソースへのその後datagridview1.DataSource = NULLを設定し、することです。 – jdweng

答えて

0

をDGVに追加するときに再ペイントメソッドが自動的に呼び出されることはありません。だから、トリックはバック実際のデータソースへのその後datagridview1.DataSource =ヌル、 を設定することです。

は、これは私のためのオプションを修正しました。私のgifはまだ回転し、私の基準が変わったのでUIが更新されます。

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     pleaseWait.Hide(); 
     this.TestTableTableDataGridView.DataSource = null; 
     this.TestTableTableDataGridView.DataSource = TestTableTableBindingSource; 
    } 
関連する問題