2011-04-07 130 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