我有一个datagridview,我绑定到一个源并使用这个方法显示:
private void tabPage2_Enter(object sender, EventArgs e)
{
HostTableList.Clear();
try
{
conn.Open();
MySqlCommand command = conn.CreateCommand();
command.CommandText = "SELECT HostName FROM test.hosts";
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
HostTableList.Add(new Hosts(reader["HostName"].ToString()));
}
this.dgvHosts.DataSource = HostTableList;
this.dgvHosts.ReadOnly = true;
this.dgvHosts.Show();
}
catch (Exception ex)
{
tbxLog.AppendText("Unable to load table from database. Exception: " + ex.Message);
tbxLog.AppendText(Environment.NewLine);
}
finally
{
conn.Close();
}
}
我还有另一种方法,当用户填写新主机名并单击“添加”时,该方法会被触发。在这个方法的最后一行,调用上面的方法:
tabPage2_Enter(null, null);
但是,在添加新主机后调用tabPage2_Enter时,DGV不会显示此新主机。我逐步完成了代码,在将DGV绑定到HostTableList之前,该列表包含所有主机,包括新主机,但在我退出表单之前DGV没有显示该主机,并重新运行它。
答案 0 :(得分:2)
可能DataGrid
认为DataSource
没有更改,因为引用没有更改。尝试重新创建HostTableList或将dgvHosts.DataSource
设置为null
然后设置为HostTableList
或使用ResetBindings()方法