如何像使用 DataGridView.DataSource 一样使用 List<Dynamic>?
How can I use a List<Dynamic> as with DataGridView.DataSource?
我正在尝试将 List<dynamic>
绑定到 DataGridView 数据源 属性。虽然编译时没有错误,但也没有显示任何列。
如果我预先创建了列,我得到了要显示的行,但其中没有数据。
简而言之,如何将 List<dynamic>
对象与我的 DataGridView 正确使用?
如果我没记错的话,Dapper 的动态查询 returns 一个 ExpandoObject
的集合,可以让你动态访问 person.Name
等属性,但底层对象实际上并没有一个 Name
属性。它使用 运行 时间绑定从内部 key/value 字典中提取数据。由于 DataGridView
的默认数据绑定使用反射来获取对象的属性,因此它找不到从查询返回的列。
所以你有几个选择:
- 将结果混合为具体类型而不是
dynamic
- 指定要在
DataGridView
中显示的列,而不是使用默认绑定。
- 使用类似于 this answer.
的方式将动态结果转换为 DataTable
我正在尝试将 List<dynamic>
绑定到 DataGridView 数据源 属性。虽然编译时没有错误,但也没有显示任何列。
如果我预先创建了列,我得到了要显示的行,但其中没有数据。
简而言之,如何将 List<dynamic>
对象与我的 DataGridView 正确使用?
如果我没记错的话,Dapper 的动态查询 returns 一个 ExpandoObject
的集合,可以让你动态访问 person.Name
等属性,但底层对象实际上并没有一个 Name
属性。它使用 运行 时间绑定从内部 key/value 字典中提取数据。由于 DataGridView
的默认数据绑定使用反射来获取对象的属性,因此它找不到从查询返回的列。
所以你有几个选择:
- 将结果混合为具体类型而不是
dynamic
- 指定要在
DataGridView
中显示的列,而不是使用默认绑定。 - 使用类似于 this answer. 的方式将动态结果转换为
DataTable