平奇

任何一种技术,只是一个工具,一个平台,一个你学习思想的例子,关注我们该关注的!

博客园 首页 新随笔 联系 订阅 管理

一、DataGridTableStyle.MappingName

DataGrid 有一个TableStyles属性,包含一个类型为DataTableStyle的对象集合,用来设置DataGrid的样式。DataTableStyle的MappingName属性设置了它与数据源的对应关系,比如我绑定一个TableName为"Table1"的DataTable到DataGrid上,这个DataGrid包含一个DataTableStyle,绑定之后,这个Style的样式还是无法应用,因为它的MappingName还没有设为"Table1"

数据源为DataSet或DataTable时,MappingName为DataTable的TableName。数据源为其它的呢?其实所有可以作为DataSource的对象(支持DataSource的规则见MSDN)有一个统一的方法,即:MappingName = 数据源对象.GetType().Name
1.强类型Array  比如说一个YourClass[] 对象作为数据源绑定到Grid上,则Style的MappingName设为 "YourClass[]",同样,这个值可以通过 对象.GetType().Name  获取
2.ArrayList    MappingName="ArrayList"
3.List<T>    这个MSDN没有说明,比如说一个List<YourClass>对象作为数据源绑定到Grid上,MappingName可以为 "List`1",这个值也可通过 对象.GetType().Name  获取

二、自动设置列宽

代码不写了,下在把实现一个通用Grid样式生成器的思路说一下:

DataGrid.CreateGraphics().MeasureString(string text, Font font) 方法可以测量字符串长度

确定数据源后,每一个列按照如下步骤进行:先从列标题开始,然后逐行遍历数据源中的数据,算出最长的宽度,最后把此列的列宽设为最长宽度加一个自定义值。

DataTable、DataSet逐行遍历数据很简单,如果是自定义集合,可以用反射得出数据。

posted on 2006-04-26 19:57  myth  阅读(2167)  评论(0编辑  收藏  举报