2011-01-24 4 views
1

J'ai un datagridview, je suis la liaison à une source et l'affichage en utilisant cette méthode:Datagridview ne pas montrer les dernières données

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(); 
     } 

    } 

J'ai une autre méthode qui se déclenche lorsque l'utilisateur remplit un nouveau nom d'hôte et clique sur Ajouter. la dernière ligne de cette méthode, appelle la méthode ci-dessus comme ceci:

tabPage2_Enter(null, null); 

Cependant, quand tabPage2_Enter est appelé après l'ajout d'un nouvel hôte, le DGV ne montre pas ce nouvel hôte. J'ai parcouru le code, et juste avant de lier la DGV à HostTableList, la liste contient TOUS les hôtes, y compris le nouveau mais la DGV n'affiche pas cet hôte jusqu'à ce que je quitte le formulaire, et le réexécute.

Répondre

2

Peut être DataGrid considère que DataSource n'a pas été modifié car la référence n'a pas changé. Essayez de recréer HostTableList ou de définir dgvHosts.DataSource à null puis à HostTableList ou d'utiliser la méthode ResetBindings()

+0

La définition de DataSource à null l'a corrigé. Merci beaucoup. – xbonez

Questions connexes