2011-04-07 2 views
0

J'ai créé une application Windows pour afficher les conversations Gmail dans une grille de données. Tous sont les articles à l'exception de la liaison Datagridview qui fonctionnent. Je ne sais pas ce qui s'est passé dans Binding to the Gridview. Veuillez consulter mon extrait de code et donnez-moi une solution pour résoudre ce problème. Merci d'avance .. Mon code est ci-dessous ... AJOUT DEDatagridview n'affiche pas les données

GmailItem _gItem = null; 
      List<GmailItem> lstMail = new List<GmailItem>(); 
      for (int i = 0; i < mailCount; i++) 
      { 
       _gItem = new GmailItem(); 
       _gItem = client.GetMailItem(i); 
       lstMail.Add(_gItem); 
      } 

      _bindingMails.DataSource = lstMail; 
      dgMails.DataSource = _bindingMails; 

Et dans la page concepteur, c'est le code pour Datagridview

this.dgMails.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.dgMails.Location = new System.Drawing.Point(6, 19); 
     this.dgMails.Name = "dgMails"; 
     this.dgMails.Size = new System.Drawing.Size(504, 150); 
     this.dgMails.TabIndex = 0; 

De plus, j'ai ajouté ce code dans notre page .cs

dgMails.Dock = DockStyle.Fill; 
      dgMails.AutoGenerateColumns = true; 
+0

Quel est le type de '_bindingMails;'? – Rhapsody

+0

@Rhapsody: BindingSource – MAC

+1

Je m'excuse de demander l'équivalent de "Êtes-vous sûr qu'il est branché?" mais, êtes-vous sûr mailCount! = 0? – Yetti

Répondre

1

Outre le commentaire de Jonh, je voudrais souligner que votre code lirait mieux ainsi:

 List<GmailItem> lstMail = new List<GmailItem>(); 
     for (int i = 0; i < mailCount; i++) 
     { 
      lstMail.Add(client.GetMailItem(i)); 
     } 

     _bindingMails.DataSource = lstMail; 
     dgMails.DataSource = _bindingMails; 
0

Si vous n'avez pas besoin de mettre à jour à travers la grille que vous pourriez faire:

dgMails.DataSource = lstMail; // Without the BindingSource 

Sur le MSDN Example ils se lient BindingSource au DataGrid avant l'ajout de données à BindingSource

+0

Désolé .. Aucune chance .. j'ai essayé aussi .. – MAC

+0

est 'dgMails.Autogeneratecolumns' mis à vrai? (ou avez-vous défini le 'DataPropertyName' de chaque colonne?) – Rhapsody

5

1) Vérifier que BindingSource n'a pas de valeur pour DataMember. La propriété DataMember indique à BindingSource de trouver un champ/propriété avec ce nom pour obtenir l'IEnumerable.

2) Assurez-vous que DataGridView.AutoGenerateColumns est True. Cette propriété est True par défaut et n'est pas visible sur un PropertyGrid, donc vous auriez dû définir False dans votre code.

Mise à jour

3) Est-ce que GMailItem contient des propriétés publiques? Les champs ne fonctionnent pas.

+0

" Les champs ne fonctionnent pas "... Merci! – JMG

Questions connexes