親フォームと子フォームがあります。子フォームからの親フォームの呼び出しメソッド親フォームのデータグリッドビューの再ロード
データグリッドビュー要素dgv
が親フォームにあります。
親フォームがロードされると、dgv
に行が追加されます。
行を作成するためのデータは、MySQLデータベースから取得されます。
親フォームのボタンが子フォームを読み込みます。
子フォームでDBテーブルの内容が変更され、dgv
をリロードするために親メソッドが呼び出されるため、ユーザーは変更が完了してから子フォームを閉じます。私はそれが同じ形式であるとして地元のメソッドを呼び出して、デバッグの目的で作成した親フォーム内の別のボタンがあり
parentForm obj_parentform = new parentForm();
obj_parentform.loadGrid("from_child");
:親メソッドを呼び出す
子フォーム。
private void btn_debug_Click(object sender, EventArgs e) {
this.loadGrid("btn");
}
方法:
### - caller: from_child
しかし:子フォームの変更テーブル内のデータ、およびそれが親メソッドを呼び出しますが、私はコンソールの上映を見ることができる今
public void loadGrid(string caller) {
try {
this.dgv.Rows.Clear();
Console.WriteLine("### - caller: " + caller);
string link = "database;datasource;port;username;password";
MySqlConnection conn = new MySqlConnection(link);
String query = "SELECT * FROM table";
MySqlCommand cmd = new MySqlCommand(query, conn);
conn.Open();
MySqlDataReader dr = cmd.ExecuteReader();
if(dr.HasRows) {
while(dr.Read()) {
this.dgv.Rows.Add(
Convert.ToString(dr.GetValue(0)),
Convert.ToString(dr.GetValue(1)),
Convert.ToString(dr.GetValue(2)),
Convert.ToString(dr.GetValue(3)),
Convert.ToString(dr.GetValue(4))
);
}
}
cmd.Dispose();
conn.Close();
}catch(Exception ex) {
MessageBox.Show(ex.Message);
}
}
dgv
は同じ行を表示しますが、メソッドが入力されても変更は行われません。
はその後、私は、デバッグボタンを押すと、コンソールが表示さ:
### - caller: btn
とdgv
がリロードされ、以前に子フォームから行われた変更は、現在示されています。
どちらの呼び出しもメソッドに入りますが、dgv
はデバッグからメソッドにアクセスするときにデータをロードするのはなぜですかbtn
?
(http://stackoverflow.com/questions/13231149/datagridview-not-updating-refreshing) – radarbob