假设有一个类

class Person
{
private string id;
private string name;
private Address homeAddr;
public string ID
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name; }
set { name = value; }
}
public Address HomeAddr
{
get { return homeAddr; }
set { homeAddr = value; }
}
} class Address
{
private string cityname;
private string postcode;
public string CityName
{
get { return cityname; }
set { cityname = value; }
}
public string PostCode
{
get { return postcode; }
set { postcode = value; }
}
}

将类绑定到Datagridview

List<Person> lst = new List<Person>();
for (int i = 0; i < 10000; ++i)
{
lst.Add(new Person()
{
ID = "1",
Name = "name",
HomeAddr = new Address() { CityName = “CityName”, PostCode = “PostCode ”}
});
}
dataGridView1.DataSource = lst;

其实值已经有了,只是Datagridview不显示。可以通过DataPropertyName指定子属性名字,在CellFormatting事件中通过反射获取。

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if ((dataGridView1.Rows[e.RowIndex].DataBoundItem != null) &&
(dataGridView1.Columns[e.ColumnIndex].DataPropertyName.Contains(".")))
{
string[] names = dataGridView1.Columns[e.ColumnIndex].DataPropertyName.Split('.');
object obj = dataGridView1.Rows[e.RowIndex].DataBoundItem;
for (int i = 0; i < names.Count(); ++i)
{
try
{
var result = obj.GetType().GetProperty(names[i]).GetValue(obj, null);
obj = result;
e.Value = result.ToString();
}
catch (Exception)
{
return;
throw;
}
}
}
}

结果发现Datagridview列多了

可以指定dataGridView1的AutoGenerateColumns属性为false,让datagridview不自动生成列。(要在绑定前指定)

 


最新文章

  1. C#异步方法的使用
  2. VB.NET中Form窗体运行时,按ESC退出全屏状态
  3. 四元数(Quaternions)简介
  4. unity3d插件Daikon Forge GUI 中文教程1-Daikon Forge介绍
  5. php课程---语句及函数
  6. Oracle EBS环境下查找数据源(OAF篇)
  7. 让Visual Studio 2015 支持ASP.NET MVC4.0.0.1
  8. MySQL的InnoDB表如何设计主键索引-转自淘宝MySQL经典案例
  9. 删除select中所有option选项
  10. pkusc2015
  11. python进阶学习(一)
  12. [我所理解的REST] 3.基于网络应用的架构
  13. 视觉slam学习之路(一)看高翔十四讲所遇到的问题
  14. OO的奇妙冒险2
  15. winfrom里面打印类似小票
  16. 关闭win10一切
  17. 【机器学习】EM算法详细推导和讲解
  18. C#解除文件锁定
  19. GoogLeNet解读
  20. 《MacTalk&#183;人生元编程》

热门文章

  1. 关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20
  2. PAT_A1030#Travel Plan
  3. scrapy获取重定向之前的url
  4. CentOS7下安装docker(Docker系列1)
  5. lua返回页面时中文乱码
  6. Spring MVC学习总结(2)——Spring MVC常用注解说明
  7. 07springMVC视图解析器
  8. 0802关于mysql数据库的锁机制
  9. Ruby对象、变量和常量
  10. PCA降维技术