关于DataGridView的数据源绑定字符串两个值得注意的问题
2010-09-17 15:58
375 查看
1. LINQ的查询结果无法直接作为DataGridView的数据源
DataGridView的DataSource属性为object类型,但并不意味着任何类型都可以作为DataGridView的数据源。DataGridView的数据源必须是实现以下接口的任意类型:
(1)IList 接口,包括一维数组。
(2)IListSource 接口,例如,DataTable和DataSet类。
(3)IBindingList 接口,例如,BindingList<T>类。
(4)IBindingListView 接口,例如,BindingSource类。
而LINQ查询结果为IEnumerable<T>或IQueryable<T>类型,如果直接作为数据源绑定到DataGridView,将无法显示任何内容。Enumerable类为IEnumerable<T>接口定义了一系列扩展方法,其中的ToList<T>方法可以将IEnumerable<T>转换为List<T>。这样,就可以绑定到DataGridView了。如
2. 字符串无法直接作为DataGridView的数据源
如果将List<string>绑定到DataGridView,往往会想当然的认为字符串会作为DataGridView的内容显示。然而实际显示的却是字符串的长度,这是为什么呢?如
![](http://images.cnblogs.com/cnblogs_com/kirinboy/WindowsLiveWriter/DataGridView_C100/image_thumb.png)
DataGridView默认情况下会显示所绑定对象的属性,如绑定一个List<User>,User的Name、Age、Gender等属性会作为Column的内容显示出来。对于一个字符串来说,只有一个实例属性Length,因此显示的即为字符串的长度了。当然,如果有其他属性存在,仍然会作为Column显示出来。
要想使DataGridView显示字符串集合,可以使用匿名类型将字符串进行包装:
![](http://images.cnblogs.com/cnblogs_com/kirinboy/WindowsLiveWriter/DataGridView_C100/image_thumb_1.png)
DataGridView的DataSource属性为object类型,但并不意味着任何类型都可以作为DataGridView的数据源。DataGridView的数据源必须是实现以下接口的任意类型:
(1)IList 接口,包括一维数组。
(2)IListSource 接口,例如,DataTable和DataSet类。
(3)IBindingList 接口,例如,BindingList<T>类。
(4)IBindingListView 接口,例如,BindingSource类。
而LINQ查询结果为IEnumerable<T>或IQueryable<T>类型,如果直接作为数据源绑定到DataGridView,将无法显示任何内容。Enumerable类为IEnumerable<T>接口定义了一系列扩展方法,其中的ToList<T>方法可以将IEnumerable<T>转换为List<T>。这样,就可以绑定到DataGridView了。如
var names = from u in list select u.Name; dataGridView1.DataSource = names.ToList();
2. 字符串无法直接作为DataGridView的数据源
如果将List<string>绑定到DataGridView,往往会想当然的认为字符串会作为DataGridView的内容显示。然而实际显示的却是字符串的长度,这是为什么呢?如
dataGridView1.DataSource = new List<string> { "just", "a", "test" };
![](http://images.cnblogs.com/cnblogs_com/kirinboy/WindowsLiveWriter/DataGridView_C100/image_thumb.png)
DataGridView默认情况下会显示所绑定对象的属性,如绑定一个List<User>,User的Name、Age、Gender等属性会作为Column的内容显示出来。对于一个字符串来说,只有一个实例属性Length,因此显示的即为字符串的长度了。当然,如果有其他属性存在,仍然会作为Column显示出来。
要想使DataGridView显示字符串集合,可以使用匿名类型将字符串进行包装:
var test = new List<string> { "just", "a", "test" }; dataGridView1.DataSource = (from s in test select new { s }).ToList();
![](http://images.cnblogs.com/cnblogs_com/kirinboy/WindowsLiveWriter/DataGridView_C100/image_thumb_1.png)
相关文章推荐
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- C#窗体:关于DataGridView的数据源绑定字符串两个值得注意的问题
- 关于DataGridView的数据源两个值得注意的小问题
- 关于DataGridView的数据源两个值得注意的小问题
- 关于C# DATAGRIDVIEW select 后绑定数据源顺序混乱的问题
- 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决
- c++中 关于字符串的一些需要注意的问题
- [VB.NET]关于datagridview数据绑定菜鸟问题!!
- 解决DataGridView绑定了数据源无法更新保存当前行的问题
- 关于两个ListBox绑定数据库后的联动问题(我先抛块砖)
- 关于打开现有项目时数据库连接配置遇到的问题 连接字符串中的数据源值指定未安装的SQL Server的实例。要解决此问题,可选择安装匹配的SQL Server实例或修改连接字符串中的数据源值
- 关于Dictionary<k,v>绑定DataGridView的问题以及曲线解决办法
- 关于C语言中printf()变量++/--输出值得注意的问题
- 关于DataGridViewComboBoxColumn的进阶绑定问题
- 关于DataGridView绑定集合的问题
- [VB.NET]关于datagridview的两个问题!
- 关于模板控件如何实现多数据源绑定的问题