2011-04-08 8 views
1

この質問は何百万回も聞かれましたが、そこから多くのアドバイスを使用していますが、それでもまだ動作しません。ここに私の試行です:DataGridViewのソースをリフレッシュできません

私はinciViewの変更を見ることができます "この"フォームを閉じて開いているときのみ。なぜこのハードリフレッシュ(メソッドのnoone)がうまくいかないのですか?それをリフレッシュする方法は?

データセットを何とか更新する必要があると思います。

+0

私に何かが不足していますか? DataBindを目的に応じて呼び出さないのですか? – Fellmeister

+0

@Fellmeister DataBindを呼び出す必要がありますか? ) – Cynede

+0

あなたは何を達成しようとしていますか? FormClosedイベントでDatabindingコードを追加しましたか? – Anuraj

答えて

1

動作する二つのアプローチがあります。

  1. は、あなたがそれを開くためにShowDialog()を使用してデータのモーダルを編集するために使用するフォームを作成します。 ShowDialog()の呼び出しの後、再クエリにコードを追加し、DataGridViewをデータソースに再バインドします。

  2. データベースが更新されたことをリスナーに通知するイベントをデータ入力フォームに追加します。データ入力フォームを開くフォームは、このイベントと、イベントがクエリーを起動してDGVを再バインドしたときに実行されるコードをサブスクライブします。

私は再クエリを言うと、あなたのDGVを再バインドするとき、私はあなたが(つまり、データベースを照会し、データソースを設定する)あなたのDGVにデータをロードするために、今やっているものは何でも意味。

最初のアプローチでは、データ入力フォームをモーダルに表示すると、ユーザーがデータ入力フォームを使用するまで、メインフォームの実行が効果的に停止されます。データ入力フォームには、キャンセルするのではなくユーザーが変更を加えたかどうかを示すDialogResultを返すこともできます。もしそうなら(例えば、DialogResult.OKがデータ入力フォームから返された)、DGVリフレッシュコードを実行することができます。

2番目のアプローチでは、データ入力フォームで、データが更新されたことをユーザーに伝えます。コントロールは、これが役立つかもしれないデータベース にバインドされていることを前提と

+0

見て、私はDGVのためのrequeryを作っているが、それは意味をなさない...私は確かに何かが不足しているが、何を理解することはできません。 – Cynede

+0

@Bjorky DataGridViewでデータをどのように正確にロードしていますか? –

+0

私はちょうど勝つフォームコンポーネントとしてデータセットのバインディングを使用しています – Cynede

1

、データセットデザイナから

  1. 右クリックしてTableAdapterのを、そして選択し、「設定...」を
  2. 次へを押すと、「データテーブルの塗りつぶし」がチェックされていることを確認します。
  3. 次へ/終了を押します。あなたのコード内

追加:

myDataSet.AcceptChanges(); 
myBindingSource.EndEdit(); 
myTableAdapter.Fill(myDataSet.Table1); 

バウンドコントロールが自動的に更新されます。

最初の2つのステートメントは重複する可能性がありますが、それは私のために働く。 :)

+0

私は人々がまだ年前の質問に答えているときは好きです:)真剣に – Cynede

関連する問題