• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DataGridViewの再描画。)

DataGridViewの再描画方法について

このQ&Aのポイント
  • VB2005、SQLServer2005環境で、FormAとFormBの2つのフォームがあり、FormBでデータを登録すると、FormAのDataGridViewを最新のデータで再描画したいです。
  • FormAで記述しているコードでは、FormBが閉じた時にイベントでMe.TestTableAdapter.Fillを呼び出していますが、再描画がうまくいきません。
  • Fillの後にDatagridView.Refreshを追加したが、ダメでした。どのようにすれば再描画できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.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イベントにやってくるかどうか確認しましょう

ginfix
質問者

お礼

回答ありがとうございます。 ご教授いただいたコードを参考に、反映させることができました。 大変助かりました、ありがとうございました。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

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 といった具合で確認しました

ginfix
質問者

お礼

回答ありがとうございます。 とりあえず、暫定的にFormAのActivateイベントで再度読むように しています。 FormBのほうでinsertは流しているのですが…。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

呼び出された FormAのClosedイベントで Fillした後に DataSourceのResetBindingsメソッドを実行してみましょう Me.TestTableAdapter.Fill(Me.DataSet1.Test) Me.TestDataBinder.ResetBindings(False) といった具合です …

ginfix
質問者

お礼

回答ありがとうございます。 ResetBindingsメソッドを使用してみましたが、やはりダメでした。 試しにFormAに適当なボタンを配置して、それのクリックイベントで ResetBindingsメソッドを呼ぶと再描画できていました。 別のFormが絡むからなのでしょうか…。