2010-08-19 8 views
1

J'ai un formulaire avec datagridview et une liste comme ceci:Actualiser datagridview sous Windows formulaire de demande

private void Form1_Load(object sender, EventArgs e) 
     { 
      List<Person> list = new List<Person>(); 
      list.Add(new Person("A", "An Giang")); 
      list.Add(new Person("B", "TP HCM")); 
      list.Add(new Person("C", "Tiền Giang")); 
      list.Add(new Person("D", "Cần Thơ")); 

      this.dataGridView1.DataSource = list; 

      list.Add(new Person("E", "Bạc Liêu")); // --> changed 

      this.dataGridView1.EndEdit(); 
      this.dataGridView1.Refresh(); 
      this.Refresh(); 
      this.dataGridView1.Parent.Refresh(); 
     } 

Mon problème est le datagridview ne montre pas la nouvelle ligne bien que sa source de données avait changé. J'essaie d'actualiser le DataGrid mais cela n'a pas fonctionné.

Répondre

3

Extrayez BindingList<T>, cette liste prend en charge la liaison de données et, en tant que telle, déclenche les événements lorsque la collection est modifiée.

+0

Vous êtes tous plus rapides que moi. Merci beaucoup. ^^ – hanuman0503

1

Un hack rapide montre que cela rebind que vous attendez avec votre List<t>:

... 
list.Add(new Person("E", "Bạc Liêu")); // --> changed 

dataGridView1.DataSource = null; 
dataGridView1.DataSource = list; 

Tenir compte refactoring d'utiliser un BindingList<Person> au lieu du List<Person>, qui se produira comme prévu, et vous aurez besoin d'aucune du code à actualiser. Implémentez cette modification et tout le code après l'insertion de la personne E peut être supprimé.

+0

J'avais essayé dataGridView1.DataSource = null; dataGridView1.DataSource = liste; mais il clignote le datagridview. – hanuman0503

0

Répondez à ma question. J'ai essayé d'utiliser un BindingList<Person> au lieu de List<Person> et le problème a été résolu.

1

Utilisez ce qu'il a fonctionné pour moi:

qTableAdapter.Fill (_11DataSet.q);