2011-04-07 123 views
0

我創建了一個用於在數據網格中顯示Gmail對話的Windows應用程序。除Datagridview綁定正在工作外,所有項目都是。我不知道在綁定到GridView時發生了什麼..請查看我的代碼片段併爲我提供解決此問題的解決方案。在此先感謝。我的代碼如下附加...Datagridview不顯示數據

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; 

而且在設計頁面,這是對的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; 

同樣的代碼,我在我們.CS

網頁添加該代碼
dgMails.Dock = DockStyle.Fill; 
      dgMails.AutoGenerateColumns = true; 
+0

'_bindingMails;'的類型是什麼? – Rhapsody 2011-04-07 16:59:19

+0

@Rhapsody:BindingSource – MAC 2011-04-07 17:00:59

+1

我很抱歉提出相當於「你確定插入了嗎?」但是,你確定mailCount!= 0? – Yetti 2011-04-07 17:07:03

回答

1

除了JonH的評論,我想指出的是您的代碼會讀這樣更好:

 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

如果您不需要通過網格更新,你可以這樣做:

dgMails.DataSource = lstMail; // Without the BindingSource 

他們綁定的BindingSource到DataGrid MSDN Example之前將數據添加到BindingSource

+0

對不起..沒有機會..我也試過這個.. – MAC 2011-04-07 17:12:07

+0

是'dgMails.Autogeneratecolumns'設置爲true? (或者你是否設置了每列的'DataPropertyName'?) – Rhapsody 2011-04-07 17:13:31

5

1)檢查BindingSource沒有DataMember的值。 DataMember屬性通知BindingSource查找具有該名稱的字段/屬性以獲取IEnumerable。

2)確保DataGridView.AutoGenerateColumns爲真。該屬性默認爲True,並且在PropertyGrid上不可見,因此您必須在代碼中將其設置爲False。

更新

3)是否GMailItem包含公共屬性?字段不起作用。

+0

「字段不工作」...謝謝! – JMG 2014-11-26 00:51:59