从List <t> </t>加载时,DataGridView显示灰色框

时间:2012-06-13 00:11:41

标签: c# .net winforms datagridview

我有一个自定义对象列表,我想将其放入我的表单上的DataGridView中。从Excel电子表格中解析对象。我尝试做我的解析,然后设置DataGridView.DataSource但没有骰子 - 它总是显示一个灰色框!

    public Critr()
    {
        InitializeComponent();
        pLogSheet = LogParser.ParseExcelLog("C:\\working.xlsx");
    }

    private void Critr_Load(object sender, EventArgs e)
    {
        dgvLogEntries.AutoGenerateColumns = true;
        dgvLogEntries.DataSource = pLogSheet.Entries;
    }

当我调试时,我可以看到我的pLogSheet.Entries实际上已被填充,它有三行数据。

enter image description here

2 个答案:

答案 0 :(得分:1)

我的班级设置有问题。 DataGridView无法识别类的字段,但属性是。所以我将我的字段转换为属性并且效果很好!

class LogEntry
{
  public string foo;
  public string bar;

  public string fooP { get { return foo; } }
  public string barP { get { return bar; } }
}

答案 1 :(得分:0)

这适用于List<T>。您可以复制粘贴并尝试。有一个新的Winforms项目并拖放DataGridView control

然后,您可以映射pLogSheet.Entries w.r.t. List<Books>

using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class  Books
    {
        public string Title { get; set; }
        public int TotalRating { get; set; }
    }

    public partial class Form2 : Form
    {
        public Form2()
        {
            var list = new List<Books>
                           {
                               new Books() {Title = "Harry Potter", TotalRating = 5},
                               new Books() {Title = "C#", TotalRating = 5}
                           };
            InitializeComponent();
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = list;
        }

    }
}