我有以下代码,我必须将类的对象列表绑定到datagridview。在这个类中,一个字段是其他类的一个对象,它还有一些字段。请参考代码。
public class Test
{
public string m_field1_Test { get; set; }
public string m_field2_Test { get; set; }
public string m_field3_Test { get; set; }
public string m_field4_Test { get; set; }
.
.
public string m_field100_Test{get; set;}
public Test1 test1obj;
public Test()
{
m_field1_Test = "field1";
m_field2_Test = "field2";
m_field3_Test = "field3";
m_field4_Test = "field4";
.
.
m_field100_Test = "field100";
test1obj = new Test1();
}
}
public class Test1
{
public string m_field1_Test1;
public string m_field2_Test1;
public string m_field3_Test1;
.
.
.
public string m_field30_Test1;
public Test1()
{
m_field1_Test1 = "field1_Test1";
m_field2_Test1 = "field2_Test1";
m_field3_Test1 = "field3_Test1";
.
.
.
m_field30_Test1 = "field30_Test1";
}
}
在按钮上单击我将测试对象列表绑定到dataGridView。代码如下。
private void Button2_Click(object sender, EventArgs e)
{
List<Test> listTest = new List<Test>();
Test obj;
for (int i = 0; i < 1000000; i++)
{
obj = new Test();
listTest.Add(obj);
}
label1.Text = listTest.Count().ToString();
dataGridView1.DataSource = listTest;
dataGridView1.BackgroundColor = Color.Beige;
}
当我执行这么多部分时,只有field1到field4出现在datagridview中。我怎样才能以这种方式绑定它,以便Test1字段也以格式显示在datagridview中。我希望输出类似这样的内容。
field1 | field2 | field3| ....field100|field1_Test1 |field2_Test1|...field30_Test1
| | | | | |
| | | | | |
| | | | | |
有人可以告诉我如何实现这个功能吗?
答案 0 :(得分:0)
在绑定之前将listTest
转换为匿名对象将公开字段。
var dataSource = listTest.Select(l => new {field1 = l.m_field1_Test,
field2 = l.m_field2_Test,
field3 = l.m_field3_Test,
field4 = l.m_field4_Test,
field1_Test1 = l.test1obj.m_field1_Test1,
field2_Test1 = l.test1obj.m_field2_Test1,
field3_Test1 = l.test1obj.m_field3_Test1});
这在你的循环中可以更好地完成到1000000,但我认为循环到1000000并不是你在生产中会做的事情。
如果您想要消除for循环,可以使用Enumerable.Range
:
var dataSource = Enumerable.Range(0, 1000000).Select(...
另外,只是提示,您应该避免将逻辑放入事件处理程序中。将其拉入自己的方法中,以便在其他地方重复使用。