【问题标题】:Datagridview does not showing dataDatagridview 不显示数据
【发布时间】:2011-07-31 21:10:12
【问题描述】:

我创建了一个 Windows 应用程序,用于在数据网格中显示 Gmail 对话。除 Datagridview 绑定外,所有项目都在工作。我不知道绑定到 Gridview 中发生了什么。请查看我的代码 sn-p 并为我提供解决此问题的解决方案。在此先感谢..我的代码附在下面...

  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;

【问题讨论】:

  • _bindingMails; 的类型是什么?
  • @Rhapsody: BindingSource
  • 我很抱歉问了“你确定它已经插入了吗?”但是,你确定 mailCount != 0 吗?

标签: c# windows binding datagridview gmail


【解决方案1】:

1) 检查 BindingSource 是否没有 DataMember 的值。 DataMember 属性告诉 BindingSource 查找具有该名称的字段/属性以从中获取 IEnumerable。

2) 确保 DataGridView.AutoGenerateColumns 为 True。此属性默认为 True,在 PropertyGrid 上不可见,因此您必须在后面的代码中将其设置为 False。

更新

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

【讨论】:

    【解决方案2】:

    如果您不需要通过网格进行更新,您可以这样做:

    dgMails.DataSource = lstMail; // Without the BindingSource
    

    MSDN Example 上,他们将 BindingSource 绑定到 DataGrid向 BindingSource 添加数据之前

    【讨论】:

    • dgMails.Autogeneratecolumns 是否设置为真? (或者你是否设置了每列的DataPropertyName?)
    【解决方案3】:

    除了 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;
    

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      相关资源
      最近更新 更多