DevExpress之GridControl详解图文并茂.docx
- 文档编号:11906193
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:114
- 大小:5.72MB
DevExpress之GridControl详解图文并茂.docx
《DevExpress之GridControl详解图文并茂.docx》由会员分享,可在线阅读,更多相关《DevExpress之GridControl详解图文并茂.docx(114页珍藏版)》请在冰点文库上搜索。
DevExpress之GridControl详解图文并茂
Dev-Express-之GridControl详解(图文并茂)
DevExpressGridControl详解
(一)原汁原味的表格展示
Dev控件中的表格控件GridControl控件非常强大。
不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。
使用过程中,多半借助Demo和英文帮助文档。
网上具体的使用方法也多半零碎。
偶遇一个简单而且详细的使用文档。
好记性不如烂笔头!
转载过来,整理整理发出来做个记录,总共有十个小节。
做的非常精细,非常感谢原作者。
插件所在位置
使用时拖拽过来,如下所示即使拖拽过来原封不动的样子:
在程序中写入构建一个表格的代码:
[csharp]viewplaincopyprint?
1. privateDataTableInitDt()
2.{
3.DataTabledt=newDataTable("个人简历");
4.dt.Columns.Add("id",typeof(int));
5.dt.Columns.Add("name",typeof(string));
6.dt.Columns.Add("sex",typeof(int));
7.dt.Columns.Add("address",typeof(string));
8.dt.Columns.Add("aihao",typeof(string));
9.dt.Columns.Add("photo",typeof(string));
10.dt.Rows.Add(newobject[]{1,"张三",1,"东大街6号","看书",""});
11.dt.Rows.Add(newobject[]{1,"王五",0,"西大街2号","上网,游戏",""});
12.dt.Rows.Add(newobject[]{1,"李四",1,"南大街3号","上网,逛街",""});
13.dt.Rows.Add(newobject[]{1,"钱八",0,"北大街5号","上网,逛街,看书,游戏",""});
14.dt.Rows.Add(newobject[]{1,"赵九",1,"中大街1号","看书,逛街,游戏",""});
15.returndt;
16.}
17.
privateDataTableInitDt()
{
DataTabledt=newDataTable("个人简历");
dt.Columns.Add("id",typeof(int));
dt.Columns.Add("name",typeof(string));
dt.Columns.Add("sex",typeof(int));
dt.Columns.Add("address",typeof(string));
dt.Columns.Add("aihao",typeof(string));
dt.Columns.Add("photo",typeof(string));
dt.Rows.Add(newobject[]{1,"张三",1,"东大街6号","看书",""});
dt.Rows.Add(newobject[]{1,"王五",0,"西大街2号","上网,游戏",""});
dt.Rows.Add(newobject[]{1,"李四",1,"南大街3号","上网,逛街",""});
dt.Rows.Add(newobject[]{1,"钱八",0,"北大街5号","上网,逛街,看书,游戏",""});
dt.Rows.Add(newobject[]{1,"赵九",1,"中大街1号","看书,逛街,游戏",""});
returndt;
}
书写gridControl1绑定数据方法:
[csharp]viewplaincopyprint?
1. privatevoidBindDataSource(DataTabledt)
2.{
3.//绑定DataTable
4.gridControl1.DataSource=dt;
5.//绑定DataSet
6.//gridControl1.DataSource=ds;
7.//gridControl1.DataMember="表名";
8.}
privatevoidBindDataSource(DataTabledt)
{
//绑定DataTable
gridControl1.DataSource=dt;
//绑定DataSet
//gridControl1.DataSource=ds;
//gridControl1.DataMember="表名";
}
程序调用:
BindDataSource(InitDt());
呈现结果如下:
(二)表格的列名配置
点击RunDesigner控件上的按钮,弹出视图设计窗口:
列配置:
我们配置完列名后,会发现设计视图发生了变化:
运行结果:
(三)列数据的格式设置
为了测试方便,我们加入新的3列,格式分别是数据,时间,字符串。
代码增加下列部分:
[csharp]viewplaincopyprint?
1.//格式增加
2.dt.Columns.Add("数据",typeof(decimal));
3.dt.Columns.Add("时间",typeof(DateTime));
4.dt.Columns.Add("自定义",typeof(string));
5.dt.Rows.Add(newobject[]{1,"张三",1,"东大街6号","看书","",-52.874,"2011-8-517:
52:
55","###"});
6.dt.Rows.Add(newobject[]{1,"王五",0,"西大街2号","上网,游戏","",-37.257,"2011-8-517:
52:
55"});
7.dt.Rows.Add(newobject[]{1,"李四",1,"南大街3号","上网,逛街","",-54.254,"2011-8-917:
52:
55"});
8.dt.Rows.Add(newobject[]{1,"钱八",0,"北大街5号","上网,逛街,看书,游戏","",-35.127,"2011-8-917:
52:
55"});
9.dt.Rows.Add(newobject[]{1,"赵九",1,"中大街1号","看书,逛街,游戏","",-29.548,"2011-8-920:
52:
55"});
//格式增加
dt.Columns.Add("数据",typeof(decimal));
dt.Columns.Add("时间",typeof(DateTime));
dt.Columns.Add("自定义",typeof(string));
dt.Rows.Add(newobject[]{1,"张三",1,"东大街6号","看书","",-52.874,"2011-8-517:
52:
55","###"});
dt.Rows.Add(newobject[]{1,"王五",0,"西大街2号","上网,游戏","",-37.257,"2011-8-517:
52:
55"});
dt.Rows.Add(newobject[]{1,"李四",1,"南大街3号","上网,逛街","",-54.254,"2011-8-917:
52:
55"});
dt.Rows.Add(newobject[]{1,"钱八",0,"北大街5号","上网,逛街,看书,游戏","",-35.127,"2011-8-917:
52:
55"});
dt.Rows.Add(newobject[]{1,"赵九",1,"中大街1号","看书,逛街,游戏","",-29.548,"2011-8-920:
52:
55"});
给gridControl1增加3列,对应上述三列。
数据:
具体数据公式可以查看输入控件的MASK设置器,里面有全部的格式公式:
运行结果:
时间:
自定义:
事件转换:
概念明确:
1.gridControl1的每一列原始数据是Value,但是显示数据是DisplayText,默认DisplayText的值即是Value通过DisplayFormat转换之后的值。
2.gridControl下的事件一般是包含表格GridView切换,点击,更改的事件,用的不多;每一个GridView下的事件包含行列处理,菜单显示,分组排序等事件,我们常用。
(所有在使用事件时,一定要明确是control事件还是view事件)
GridView存在事件:
自定义列显示事件
增加事件:
[csharp]viewplaincopyprint?
1.privatevoidgridView1_CustomColumnDisplayText(objectsender,DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgse)
2.{
3.if(e.Column.FieldName=="sex")
4.{
5.switch(e.Value.ToString().Trim())
6.{
7.case"1":
8.e.DisplayText="男";
9.break;
10.case"0":
11.e.DisplayText="女";
12.break;
13.default:
14.e.DisplayText="";
15.break;
16.}
17.}
18.}
privatevoidgridView1_CustomColumnDisplayText(objectsender,DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgse)
{
if(e.Column.FieldName=="sex")
{
switch(e.Value.ToString().Trim())
{
case"1":
e.DisplayText="男";
break;
case"0":
e.DisplayText="女";
break;
default:
e.DisplayText="";
break;
}
}
}
显示结果:
(四)分组排序汇总
分组:
按时间分第一组:
按性别分第二组:
显示结果:
高级设置:
将所有组展开代码:
gridView1.ExpandAllGroups();
显示结果:
自定义组名,GridView级事件
增加事件:
[csharp]viewplaincopyprint?
1.privatevoidgridView1_CustomDrawGroupRow(objectsender,DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgse)
2.{
3.GridGroupRowInfoGridGroupRowInfo=e.InfoasGridGroupRowInfo;
4.GridGroupRowInfo.GroupText="第"+(e.RowHandle).ToString()+"行"+GridGroupRowInfo.EditValue.ToString();
5.}
privatevoidgridView1_CustomDrawGroupRow(objectsender,DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgse)
{
GridGroupRowInfoGridGroupRowInfo=e.InfoasGridGroupRowInfo;
GridGroupRowInfo.GroupText="第"+(e.RowHandle).ToString()+"行"+GridGroupRowInfo.EditValue.ToString();
}
显示结果:
注意:
每一行都有一个RowHandle属性,普通行的RowHandle为非负整数,从0开始;组行
排序:
排序设置
显示结果:
汇总:
汇总数据列设置
注意:
汇总结果是显示在Footer面板中的,gridControl中的Footer面板默认是不显示的,所以如果要汇总数据,那么必须先设置Footer面板显示。
显示结果:
组计:
代码:
[csharp]viewplaincopyprint?
1.gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum,"数据",gridColumn7,"组计:
{0}");
gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum,"数据",gridColumn7,"组计:
{0}");
结果显示
(五)设置行备注和行号
备注显示设置
设置备注字段
显示结果:
可以写入按键事件F3,用以开关备注显示
[csharp]viewplaincopyprint?
1. privatevoidForm4_KeyUp(objectsender,KeyEventArgse)
2.{
3.if(e.KeyCode==Keys.F3)
4.{
5.gridView1.OptionsView.ShowPreview=!
gridView1.OptionsView.ShowPreview;
6.}
7.}
privatevoidForm4_KeyUp(objectsender,KeyEventArgse)
{
if(e.KeyCode==Keys.F3)
{
gridView1.OptionsView.ShowPreview=!
gridView1.OptionsView.ShowPreview;
}
}
行号显示要用到的事件:
代码:
[csharp]viewplaincopyprint?
1.privatevoidgridView1_CustomDrawRowIndicator(objectsender,DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgse)
2.{
3.if(e.Info.IsRowIndicator)
4.{
5.e.Info.DisplayText="Row"+e.RowHandle.ToString();
6.}
7.}
8.gridView1.IndicatorWidth=70;
privatevoidgridView1_CustomDrawRowIndicator(objectsender,DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgse)
{
if(e.Info.IsRowIndicator)
{
e.Info.DisplayText="Row"+e.RowHandle.ToString();
}
}
gridView1.IndicatorWidth=70;
显示结果
(六)样式设置
表格样式:
全局设置
例子:
例子:
列样式:
只作用于当前的列
通用样式:
外观设定
注意:
样式设定都是相同的,Appearance前缀。
(七)事件
[csharp]viewplaincopyprint?
1. pre">privatevoidgridView1_RowCellClick(objectsender,DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgse) 2.{ 3.if(e.Button==MouseButtons.Left) 4.{ 5.//鼠标的那个按钮按下 6.} 7.if(e.Clicks==2) 8.{ 9.//鼠标点击次数 10.} 11.if(e.Delta>0) 12.{ 13.//鼠标滚轮滚动方向 14.} 15.if(e.X>0&e.Y>0) 16.{ 17.//鼠标的坐标 18.} 19.if(e.RowHandle>0) 20.{ 21.//点击的行号 22.} 23.if(e.CellValue! =null) 24.{ 25.//点击的单元格中的值 26.} 27.if(e.Column! =null) 28.{ 29.//点击的单元格所属列信息 30.} 31.} 32. 33. pre">privatevoidgridView1_RowClick(objectsender,DevExpress.XtraGrid.Views.Grid.RowClickEventArgse) 34.{ 35.if(e.Button==MouseButtons.Left) 36.{ 37.//鼠标的那个按钮按下 38.} 39.if(e.Clicks==2) 40.{ 41.//鼠标点击次数 42.} 43.if(e.Delta>0) 44.{ 45.//鼠标滚轮滚动方向 46.} 47.if(e.X>0&e.Y>0) 48.{ 49.//鼠标的坐标 50.} 51.if(e.RowHandle>0) 52.{ 53.//点击的行号 54.} 55.} privatevoidgridView1_RowCellClick(objectsender,DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgse) { if(e.Button==MouseButtons.Left) { //鼠标的那个按钮按下 } if(e.Clicks==2) { //鼠标点击次数 } if(e.Delta>0) { //鼠标滚轮滚动方向 } if(e.X>0&e.Y>0) { //鼠标的坐标 } if(e.RowHandle>0) { //点击的行号 } if(e.CellValue! =null) { //点击的单元格中的值 } if(e.Column! =null) { //点击的单元格所属列信息 } } privatevoidgridView1_RowClick(objectsender,DevExpress.XtraGrid.Views.Grid.RowClickEventArgse) { if(e.Button==MouseButtons.Left) { //鼠标的那个按钮按下 } if(e.Clicks==2) { //鼠标点击次数 } if(e.Delta>0) { //鼠标滚轮滚动方向 } if(e.X>0&e.Y>0) { //鼠标的坐标 } if(e.RowHandle>0) { //点击的行号 } } 重新绘制列样式事件: gridView1_CustomDrawCell 代码: [csharp]viewplaincopyprint? 1.privatevoidgridView1_CustomDrawCell(objectsender,DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgse) 2.{ 3.if(e.Column.FieldName=="数据") 4.{ 5.GridCellInfoGridCellInfo=e.CellasGridCellInfo; 6.if(GridCellInfo.IsDataCell&&double.Parse(GridCellInfo.CellValue.ToString())<=-30) 7.e.Appearance.BackColor=Color.Yellow; 8.elseif(GridCellInfo.IsDataCell&&double.Parse(GridCellInfo.CellValue.ToString())>-30 9.&&double.Parse(GridCellInfo.CellValue.ToString())<=-50) 10.e.Appearance.BackColor=Color.Green; 11.elseif(GridCellInfo.IsDataCell&&double.Parse(GridCellInfo.CellValue.ToString())>-50) 12.e.Appearance.BackColor=Color.Red; 13.} 14.} privatevoidgridView1_CustomDrawCell(objectsender,DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgse) { if(e.Column.FieldNam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DevExpress GridControl 详解 图文并茂