- ベストアンサー
DataGridViewの再描画方法について
- VB2005、SQLServer2005環境で、FormAとFormBの2つのフォームがあり、FormBでデータを登録すると、FormAのDataGridViewを最新のデータで再描画したいです。
- FormAで記述しているコードでは、FormBが閉じた時にイベントでMe.TestTableAdapter.Fillを呼び出していますが、再描画がうまくいきません。
- Fillの後にDatagridView.Refreshを追加したが、ダメでした。どのようにすれば再描画できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
# 追加検証してみて … # ANo.2 でMDBと書いてますが SQL Server2005 Express の間違えです FormBの追加イベントで TableAdapterのUpdateメソッド呼び出して追加行をデータベースに反映すれば良いようですよ 追加イベントで Dim row as DataRow = TestDS1.Test.NewRow Row("Name") = TextBox1.Text TestDS1.Test.Rws.Add( Row ) TesttableAdapter1.Update( TestDS1.Test ) といった具合で データベースに追加行を反映します その後で FormBを閉じます このときFormAの Form_Closedイベントにやってくるかどうか確認しましょう
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
FormBの追加登録イベントで Insertメソッドなどで追加はされているのでしょうか? 私は、DB自体あまり詳しくないのですが ・・・ FormB側で使っている DataAdapterのFillメソッドだけでは MDBファイルへの反映がうまくいかないようです Insertメソッドで明示的に追加した場合は反映されるのですが … 当方の確認コード FormBの追加イベントで TestTableAdapter.Insert(TextBox1.Text) Form1.UpdateGrid() FormA側に Public Sub UpdateGrid() TestTableAdapter.Fill(Me.DataSet1.Test) TestDataBinder.ResetBindings(False) End Sub といった具合で確認しました
お礼
回答ありがとうございます。 とりあえず、暫定的にFormAのActivateイベントで再度読むように しています。 FormBのほうでinsertは流しているのですが…。
- redfox63
- ベストアンサー率71% (1325/1856)
呼び出された FormAのClosedイベントで Fillした後に DataSourceのResetBindingsメソッドを実行してみましょう Me.TestTableAdapter.Fill(Me.DataSet1.Test) Me.TestDataBinder.ResetBindings(False) といった具合です …
お礼
回答ありがとうございます。 ResetBindingsメソッドを使用してみましたが、やはりダメでした。 試しにFormAに適当なボタンを配置して、それのクリックイベントで ResetBindingsメソッドを呼ぶと再描画できていました。 別のFormが絡むからなのでしょうか…。
お礼
回答ありがとうございます。 ご教授いただいたコードを参考に、反映させることができました。 大変助かりました、ありがとうございました。