admin 管理员组文章数量: 1086019
2024年3月7日发(作者:斯特林结局)
Dev-Express-之GridControl详解(图文并茂)
Dev Express GridControl详解
(一)原汁原味的表格展示
Dev控件中的表格控件GridControl控件非常强大。不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。使用过程中,多半借助Demo和英文帮助文档。网上具体的使用方法也多半零碎。偶遇一个简单而且详细的使用文档。好记性不如烂笔头!转载过来,整理整理发出来做个记录,总共有十个小节。做的非常精细,非常感谢原作者。
插件所在位置
使用时拖拽过来,如下所示即使拖拽过来原封不动的样子:
在程序中写入构建一个表格的代码:
[csharp] view plaincopyprint?
1. private DataTable InitDt()
2. {
3. DataTable dt = new DataTable("个人简历");
4. ("id",typeof(int));
5. ("name", typeof(string));
6. ("sex", typeof(int));
7. ("address", typeof(string));
8. ("aihao", typeof(string));
9. ("photo", typeof(string));
10. (new object[] { 1, "张三", 1, "东大街6号", "看书", "" });
11. (new object[] { 1, "王五", 0, "西大街2号", "上网,游戏", "" });
12. (new object[] { 1, "李四", 1, "南大街3号", "上网,逛街", "" });
13. (new object[] { 1, "钱八", 0, "北大街5号", "上网,逛街,看书,游戏", "" });
14. (new object[] { 1, "赵九", 1, "中大街1号", "看书,逛街,游戏", "" });
15. return dt;
16. }
17.
书写gridControl1绑定数据方法:
[csharp] view plaincopyprint?
1. private void BindDataSource(DataTable dt)
2. {
3. //绑定DataTable
4. urce = dt;
5. //绑定DataSet
6. //urce = ds;
7. //mber = "表名";
8. }
程序调用:BindDataSource(InitDt());
呈现结果如下:
(二)表格的列名配置
点击Run Designer控件上的按钮,弹出视图设计窗口:
列配置:
我们配置完列名后,会发现设计视图发生了变化:
运行结果:
(三)列数据的格式设置
为了测试方便,我们加入新的3列,格式分别是数据,时间,字符串。代码增加下列部分:
[csharp] view plaincopyprint?
1. //格式增加
2. ("数据",typeof(decimal));
3. ("时间",typeof(DateTime));
4. ("自定义",typeof(string));
5. (new object[] { 1, "张三", 1,"东大街6号","看书","",-52.874,"2011-8-5
17:52:55","###" });
6. (new object[] { 1, "王五", 0,"西大街2号","上网,游戏","", -37.257,"2011-8-5
17:52:55" });
7. (new object[] { 1, "李四", 1,"南大街3号","上网,逛街","", -54.254,"2011-8-9
17:52:55" });
8. (new object[] { 1, "钱八", 0,"北大街5号","上网,逛街,看书,游戏","",-35.127,"2011-8-9
17:52:55" });
9. (new object[] { 1,"赵九", 1,"中大街1号","看书,逛街,游戏","",-29.548,"2011-8-9
20:52:55" });
给gridControl1增加3列,对应上述三列。
数据:
具体数据公式可以查看输入控件的MASK设置器,里面有全部的格式公式:
运行结果:
时间:
自定义:
事件转换:
概念明确:
1. gridControl1的每一列原始数据是Value,但是显示数据是 DisplayText,默认DisplayText的值即是Value通过DisplayFormat转换之后的值。
2. gridControl下的事件一般是包含表格GridView切换,点击,更改的事件,用的不多;每一个GridView下的事件包含行列处理,菜单显示,分组排序等事件,我们常用。(所有在使用事件时,一定要明确是control事件还是view事件)
GridView存在事件:自定义列显示事件
增加事件:
[csharp] view plaincopyprint?
1. private
voidgridView1_CustomColumnDisplayText(objectsender,
ColumnDisplayTextEventArgse)
2. {
3. if(ame =="sex")
4. {
5. switch(ng().Trim())
6. {
7. case"1":
8. yText = "男";
9. break;
10. case"0":
11. yText = "女";
12. break;
13. default:
14. yText = "";
15. break;
16. }
17. }
18. }
显示结果:
(四)分组排序汇总
分组:
按时间分第一组:
按性别分第二组:
显示结果:
高级设置:
将所有组展开代码:AllGroups();
显示结果:
自定义组名,GridView级事件
增加事件:
[csharp] view plaincopyprint?
1. private void gridView1_CustomDrawGroupRow(object sender,
ectCustomDrawEventArgs e)
2. {
3. GridGroupRowInfo GridGroupRowInfo = as GridGroupRowInfo;
4. ext = "第" + (dle).ToString() + "行 " +
ng();
5. }
显示结果:
注意:每一行都有一个RowHandle属性,普通行的RowHandle为非负整数,从0开始;组行
排序:
排序设置
显示结果:
汇总:
汇总数据列设置
注意:汇总结果是显示在Footer面板中的,gridControl中的Footer面板默认是不显示的,所以如果要汇总数据,那么必须先设置Footer面板显示。
显示结果:
组计:
代码:
[csharp] view plaincopyprint?
1. (, "数据", gridColumn7, "组计:{0}");
结果显示
(五)设置行备注和行号
备注显示设置
设置备注字段
显示结果:
可以写入按键事件F3,用以开关备注显示
[csharp] view plaincopyprint?
1. private void Form4_KeyUp(object sender, KeyEventArgs e)
2. {
3. if (e == Keys.F3)
4. {
5. eview = !eview;
6. }
7. }
行号显示要用到的事件:
代码:
[csharp] view plaincopyprint?
1. private void gridView1_CustomDrawRowIndicator(object sender,
icatorCustomDrawEventArgs e)
2. {
3. if (ndicator)
4. {
5. yText = "Row " + ng();
6. }
7. }
8. torWidth = 70;
显示结果
(六)样式设置
表格样式:全局设置
例子:
例子:
列样式:只作用于当前的列
通用样式:外观设定
注意:样式设定都是相同的,Appearance前缀。
(七)事件
[csharp] view plaincopyprint?
1. private void gridView1_RowCellClick(object sender,
lClickEventArgs e)
2. {
3. if ( == )
4. {
5. //鼠标的那个按钮按下
6. }
7. if ( == 2)
8. {
9. //鼠标点击次数
10. }
11. if ( > 0)
12. {
13. //鼠标滚轮滚动方向
14. }
15. if (e.X > 0 & e.Y > 0)
16. {
17. //鼠标的坐标
18. }
19. if (dle > 0)
20. {
21. //点击的行号
22. }
23. if (lue != null)
24. {
25. //点击的单元格中的值
26. }
27. if ( != null)
28. {
29. //点击的单元格所属列信息
30. }
31. }
32.
33. private void gridView1_RowClick(object sender,
ckEventArgs e)
34. {
35. if ( == )
36. {
37. //鼠标的那个按钮按下
38. }
39. if ( == 2)
40. {
41. //鼠标点击次数
42. }
43. if ( > 0)
44. {
45. //鼠标滚轮滚动方向
46. }
47. if (e.X > 0 & e.Y > 0)
48. {
49. //鼠标的坐标
50. }
51. if (dle > 0)
52. {
53. //点击的行号
54. }
55. }
重新绘制列样式事件:gridView1_CustomDrawCell
代码:
lCustomDrawEventArgs e)
[csharp] view plaincopyprint?
1. private void gridView1_CustomDrawCell(object sender,
2. {
3. if (ame == "数据")
4. {
5. GridCellInfo GridCellInfo = as GridCellInfo;
6. if (Cell && (ng()) <= -30)
7. lor = ;
8. else if (Cell && (ng()) > -30
9. && (ng()) <= -50)
10. lor = ;
11. else if (Cell && (ng()) > -50)
12. lor = ;
13. }
14. }
重新计算备注事件:gridView1_CalcPreviewText
代码:
eviewTextEventArgs e)
[csharp] view plaincopyprint?
1. private void gridView1_CalcPreviewText(object sender,
2. {
3. DataRow dr = aRow(dle);
4. wText = dr["name"].ToString() + " : " + dr["aihao"].ToString();
5. }
注意:GridView中大多数事件我们都会并且必须用到e这个参数,我们可以从e这个参数中获取很多信息,包括单元格、列、行、表格、GridControl的信息。我们要根据事件的意义来了解这个e是单元格级别的,或是行级别的,或是列级别的等,因为我们可以获取e的层级以上的信息,层级以下的信息就不能获取了。
e中的属性都是大同小异,其中最常用的是dle这个属性,它代表行号的意思,通过aRow(dle)方法可以获得这一行的数据行DataRow;并以此来做很多操作。
上述我们也说过组行的RowHandle为负数,我们通过GetDataRow获取数据行是错误的,这时我们通过aRowHandleByGroupRowHandle(
dle);方法来转化,这时得到的数据行是该组的第一行数据。在此我们需特别注意。如果加入上述转换,我们选择数据时每组第一行数据就会重复,我们要做去重复处理。
皮肤设置
(八)菜单
菜单控件
拖入窗口中
显示如下
设置popupMenu
设置barManager
设置controller
增加菜单项
弹出配置窗口
版权声明:本文标题:Dev-Express-之GridControl详解(图文并茂) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1709805576a546989.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论