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

增加菜单项

弹出配置窗口


本文标签: 事件 显示 数据 表格 设置