CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [分享] WinForm DataGrid 的DataGridTableStyle用法
zhang_daqian
高级会员
Rank: 2



UID 280439
精华 0
积分 870
帖子 51
威望 302
ZD币 89 元
阅读权限 50
注册 2007-12-25
状态 离线
  楼主
发表于 2008-5-5 13:09  资料  个人空间  短消息  加为好友 
开发者在线

WinForm DataGrid 的DataGridTableStyle用法

Part 1 自定义数据源方式的代码,首先在winform里拖一个DataGrid进去。 private
void Form1_Load(object sender, System.EventArgs e)
        
{
            
//定义数据源--DataTable
            DataTable dt=new DataTable("mytable");
            
//添加列
            dt.Columns.Add("列1",typeof(String));
            dt.Columns.Add(
"列2",typeof(Int32));
            dt.Columns.Add(
"列3",typeof(Boolean));

            
//添加行
            DataRow row,row1;
            row
=dt.NewRow();
            row[
"列1"]="行1";
            row[
"列2"]=1;
            row[
"列3"]=true;
            dt.Rows.Add(row);
            row1
=dt.NewRow();
            row1[
"列1"]="行2";
            row1[
"列2"]=2;
            row1[
"列3"]=false;
            dt.Rows.Add(row1);

            
//为DataGrid添加数据源
            dataGrid1.DataSource=dt;

            
//定义DataGridTableStyle
            DataGridTableStyle ts=new DataGridTableStyle();
            ts.MappingName
=dt.TableName;  //映射style对应数据源的表名,很重要,否则无数据显示

            
//分别对列进行渲染

int numColumns=dt.Columns.Count;
            dataGrid1.CaptionText
="DataGrid事例";  //指名DataGrid标题

            
//采用循环方式渲染前两列
            DataGridTextBoxColumn aColumnTextColumn;
            
for(int i=0;i<numColumns-1;i++)
            
{
               
//前两列绑定TextBox方式显示
                aColumnTextColumn=new DataGridTextBoxColumn();
                aColumnTextColumn.HeaderText
=dt.Columns.ColumnName;  //列头
                aColumnTextColumn.MappingName=dt.Columns.ColumnName; //映射数据源的列名,很重要,否则无数据显示

               
if (i==1)
               
{
                    
//规定Cell的高度和宽度,然后渲染
                    ts.PreferredColumnWidth=100;
                    ts.PreferredRowHeight
=20;
                }


               
//指名交替行的背景色
                ts.AlternatingBackColor=Color.LightGray;
               
//TableStyle的ColumnStyle列添加上面指定的TextBox
                ts.GridColumnStyles.Add(aColumnTextColumn);
            }


            
//用CheckBox的方式渲染第3列
            DataGridBoolColumn bc=new DataGridBoolColumn();
            bc.HeaderText
=dt.Columns[2].ColumnName;
            bc.MappingName
=dt.Columns[2].ColumnName;
            ts.PreferredColumnWidth
=100;
            ts.GridColumnStyles.Add(bc);

            
//DataGrid上添加上面定义的TableStyle
            dataGrid1.TableStyles.Add(ts);
        }


Part 2 用查询数据库的结果集作为数据源,首先在winform里拖一个datagrid。 private
void Form2_Load(object sender, System.EventArgs e)
        
{
            DataSet ds
=BookingCar.Business.Facade.Order.QueryAllOrderStatus(); //查询数据库得到DataSet
            dataGrid1.DataSource=ds.Tables[0]; //设定数据源
            dataGrid1.CaptionText="DataGrid试验";  //设定DataGrid的标题

            DataGridTableStyle ts
=new DataGridTableStyle();  //定义TableStyle
            ts.MappingName=ds.Tables[0].TableName;   //映射表名称,重要
            ts.ReadOnly=false;     //整个DataGrid读写方式
            
            
//第一列
            DataGridTextBoxColumn tc=new DataGridTextBoxColumn();  //定义第一列用TextBox渲染
            tc.HeaderText="状态类型";   //改变列头的显示
            tc.MappingName=ds.Tables[0].Columns[0].ColumnName;  //映射列的名称,重要,实际就是查询select 对因的列
            tc.Alignment=HorizontalAlignment.Center;  //对齐方式
            tc.ReadOnly=true;    //指明这一列的为只读方式
            ts.PreferredColumnWidth=70;  //指明Cell宽度
            ts.PreferredRowHeight=20; //指名Cell高度
            ts.AlternatingBackColor=Color.LightGray;
            ts.GridColumnStyles.Add(tc);
//为ColumnStyle添加上面的TextBox

            
//第二列
            tc=new DataGridTextBoxColumn();
            tc.HeaderText
="状态描述";
            tc.MappingName
=ds.Tables[0].Columns[1].ColumnName;
            ts.PreferredColumnWidth
=200;
            ts.PreferredRowHeight
=20;
            ts.AlternatingBackColor
=Color.LightGray;
            ts.GridColumnStyles.Add(tc);

            
//把TableStyle添加到DataGrid的tablestyle中
            dataGrid1.TableStyles.Add(ts);
        }

Part 3 使用DataGrid的属性面板。首先在winform里拖一个datagrid。
private
void Form3_Load(object sender, System.EventArgs e)
        
{
            DataSet ds
=BookingCar.Business.Facade.Order.QueryAllOrderStatus();
            dataGrid1.DataSource
=ds.Tables[0];
        }


然后在TableStyle属性框内添加TableStyle,一般添加一个就够了,然后为TableStyle添加ColumnStyle,对应多个列。两个属性的mappingname都很重要,TableStyle的mappingname对应结果集的表名称,columnstyle的mappingname对应列的名称。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 


操作系统 数据库 中间件 应用软件 管理软件 Web应用 AJAX Linux Web2.0 RIA 开源 SOA OSS SEO Vista SharePoint Windows Server Windows 2003 Windows 2008 IIS 动态语言 Windows IE7 Oracle Oracle11g office SQLServer Firefox Solaris Ubuntut 微软Google 资讯 博客 技术看板 英雄 图片 QQ 腾讯QQ 珊瑚虫QQ 金山上市 站点图 AJAX BI BPM CRM DNS Android SQL Server 2008 EAI Enterprise 2.0 ETL ERP Flash GPL3 Java j2me JavaEE LAMP mashups NTFS ODBC ODF OOP Outsourcing RIA RSS SOA UML Web2.0 Workflow XAML XML ZFS 备份 并发控制 并行计算 动态语言 多核计算 虚拟技术 CRM 数据仓库 虚拟化 Apollo Apache BizTalk DB2 Eclipse Excel Expression Flex3 Fedora7 Forefront FreeBSD Hibernate IE 7 IIS JavaFX JBoss Linspire live Maxthon Mobile 6.0 Mozilla MySQL office OneCare OpenOffice Solaris Oracle Oracle 11g SQL Server Opera Outlook Photoshop PostgreSQL PowerBuilder PowerShell Rational RHEL ROR Salesforce Server Core Solaris SugarCRM TFS Tomcat Ubuntut Vista VMWare VPC VSTS WCF WebLogic WPF Xandros Xen KDE GNOME 火狐浏览器 Gmail 邮箱 Exchange server AJAX BI BPM EAI ETL ERP CRM DNS Flash Java JavaEE j2me LAMP NTFS ODBC ODF OOP Outsourcing RIA RSS SOA SEO Web2.0 mash up Workflow XAML XML GPL 3协议 ZFS 备份 并行计算 多核 数据仓库 搜索 并发控制 并行计算 动态语言 虚拟化 虚拟技术 Enterprise Web2.0 软件技术资讯 操作系统 Windows Server 2008 Windows Server 2008专题 系统安全 IIS 虚拟机 Windows Linux 嵌入式操作系统 Vista专区 数据库/数据仓库 MySQL & PostgreSQL & Sybase Oracle 10g / 9i / 11g SQL SERVER DB2 中间件/SOA QQ2009下载 QQ QQ群 QQ炫铃 QQ视频 QQ好友 木马病毒 QQ2007 江民 瑞星 金山毒霸 协作办公 ODF/OOXML SharePoint office web应用 浏览器 SaaS/S+S Microsoft技术 操作系统软件数据库软件中间件软件

软件频道2008年3月精华 软件频道2008年2月精华 软件频道2008年1月精华 软件频道12月精华 软件频道11月精华 软件频道10月精华 软件频道9月精华 软件频道8月精华