将匿名列表绑定到DataGridView的DataSource时没有列

时间:2013-11-18 10:00:22

标签: c# winforms datagridview datasource anonymous-types

我正在尝试将匿名类型列表绑定到DataGridView,但Columns和Rows似乎是空的。

[TestMethod]
public void TestMethod1()
{
    var view = new DataGridView() { DataSource = new[] { new { Foo = 1, Bar = "2" } }};

    Assert.AreEqual(2, view.Columns.Count); // fail, count = 0
    Assert.AreEqual(1, view.Rows.Count); // fail, count = 0
}

在匿名类型绑定后,我找不到很多关于访问列和行的资源。为什么会这样一个竞争的任何想法?

编辑:

将父级设置为模拟表单,然后转到:

[TestMethod]
public void TestMethod1()
{
    var view = new DataGridView() { Parent = new Form() , DataSource = new[] { new { Foo = 1, Bar = "2" } }};
    Assert.AreEqual(2, view.Columns.Count); // win
    Assert.AreEqual(1, view.Rows.Count); // win
}

1 个答案:

答案 0 :(得分:1)

尝试在TestMethod1事件处理程序中调用Load

private void Form1_Load(object sender, EventArgs e){
   TestMethod1();
}

还记得您的网格没有任何父级,所以如何呈现它?所以尝试为它分配一些父:

var view = new DataGridView(){Parent = this};
//...

原因是您的DataGridView在加载UI之前不会在开头呈现。