2011-01-24 84 views
1

我有一個DataGridView,我綁定到源和使用這種方法顯示:的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在我退出表單之前不會顯示該主機,然後重新運行。

回答

2

可能是DataGrid認爲DataSource沒有改變,因爲參考沒有改變。嘗試重新HostTableList或設置dgvHosts.DataSourcenull,然後HostTableList或使用ResetBindings()方法

+0

設置數據源爲null固定它。萬分感謝。 – xbonez 2011-01-24 18:22:44