データベースに新しいメンバーを挿入した後、DataGridView を更新したいと考えています。mainform_load で発生するメイン フォームにメソッドを作成しました。他のフォーム (addmember) から、SaveMemberButton をクリックした後、そのメソッドを呼び出して datagridview を更新していますが、それは起こりません。
これはメインフォームの私のコードです:
private void MainForm_Load(object sender, EventArgs e)
{
//ShowLoginForm();
ListMembers();
}
public void ListMembers()
{
MembersDataGridView.Columns.Clear();
MembersDataGridView.DataSource = Connection.ListMembers();
MembersDataGridView.ClearSelection();
}
これは他のフォームの私のコードです:
private MainForm mainForm = new MainForm();
private void SaveMemberButton_Click(object sender, EventArgs e)
{
try
{
if (IsValid())
{
var member = new Member
{
Name = AddNewNameTextBox.Text,
Surname = AddNewSurnameTextBox.Text,
EntryDate = DateTime.ParseExact(AddNewEntryDateTextBox.Text, "dd.MM.yyyy", CultureInfo.InvariantCulture),
};
Connection.InsertMember(member);
MessageBox.Show("Member registration successful!");
}
mainForm.ListMembers();
this.Close();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
これは、データベースからデータを取得するコードです。
public List<Member> ListMembers()
{
List<Member> list = new List<Member>();
string SelectMembers = "SELECT * FROM Members";
sqlConnection.Open();
using (sqlCommand = new SqlCommand(SelectMembers, sqlConnection))
{
var sqlReader = sqlCommand.ExecuteReader();
while (sqlReader.Read())
{
var member = new Member
{
Id = Convert.ToInt32(sqlReader["Id"]),
Name = sqlReader["Name"].ToString(),
Surname = sqlReader["Surname"].ToString(),
EntryDate = Convert.ToDateTime(sqlReader["EntryDate"])
};
list.Add(member);
}
}
sqlConnection.Close();
return list;
}
MainForm_Load では、グリッドビューにデータが完全に一覧表示されます。しかし、グリッドビューを更新できません。アプリケーションを再起動して更新する必要があります。助言がありますか ?