




已阅读5页,还剩103页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GridControl详解(一)原汁原味的表格展示Dev控件中的表格控件GridControl控件非常强大。不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。使用过程中,多半借助Demo和英文帮助文档。网上具体的使用方法也多半零碎。偶遇一个简单而且详细的使用文档。好记性不如烂笔头!转载过来,整理整理发出来做个记录,总共有十个小节。做的非常精细,非常感谢原作者。插件所在位置使用时拖拽过来,如下所示即使拖拽过来原封不动的样子:在程序中写入构建一个表格的代码:csharp view plaincopyprint?1. private DataTable InitDt() 2. 3. DataTable dt = new DataTable(个人简历); 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(new object 1, 张三, 1, 东大街6号, 看书, ); 11. dt.Rows.Add(new object 1, 王五, 0, 西大街2号, 上网,游戏, ); 12. dt.Rows.Add(new object 1, 李四, 1, 南大街3号, 上网,逛街, ); 13. dt.Rows.Add(new object 1, 钱八, 0, 北大街5号, 上网,逛街,看书,游戏, ); 14. dt.Rows.Add(new object 1, 赵九, 1, 中大街1号, 看书,逛街,游戏, ); 15. return dt; 16. 17. private DataTable InitDt() DataTable dt = new DataTable(个人简历); 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(new object 1, 张三, 1, 东大街6号, 看书, ); dt.Rows.Add(new object 1, 王五, 0, 西大街2号, 上网,游戏, ); dt.Rows.Add(new object 1, 李四, 1, 南大街3号, 上网,逛街, ); dt.Rows.Add(new object 1, 钱八, 0, 北大街5号, 上网,逛街,看书,游戏, ); dt.Rows.Add(new object 1, 赵九, 1, 中大街1号, 看书,逛街,游戏, ); return dt; 书写gridControl1绑定数据方法:csharp view plaincopyprint?1. private void BindDataSource(DataTable dt) 2. 3. /绑定DataTable 4. gridControl1.DataSource = dt; 5. /绑定DataSet 6. /gridControl1.DataSource = ds; 7. /gridControl1.DataMember = 表名; 8. private void BindDataSource(DataTable dt) /绑定DataTable gridControl1.DataSource = dt; /绑定DataSet /gridControl1.DataSource = ds; /gridControl1.DataMember = 表名; 程序调用:BindDataSource(InitDt();呈现结果如下:GridControl详解(二)表格的列名配置点击Run Designer控件上的按钮,弹出视图设计窗口:列配置:我们配置完列名后,会发现设计视图发生了变化:运行结果:GridControl详解(三)列数据的格式设置 为了测试方便,我们加入新的3列,格式分别是数据,时间,字符串。代码增加下列部分:csharp view plaincopyprint?1. /格式增加 2. dt.Columns.Add(数据,typeof(decimal); 3. dt.Columns.Add(时间,typeof(DateTime); 4. dt.Columns.Add(自定义,typeof(string); 5. dt.Rows.Add(new object 1, 张三, 1,东大街6号,看书,-52.874,2011-8-5 17:52:55,# ); 6. dt.Rows.Add(new object 1, 王五, 0,西大街2号,上网,游戏, -37.257,2011-8-5 17:52:55 ); 7. dt.Rows.Add(new object 1, 李四, 1,南大街3号,上网,逛街, -54.254,2011-8-9 17:52:55 ); 8. dt.Rows.Add(new object 1, 钱八, 0,北大街5号,上网,逛街,看书,游戏,-35.127,2011-8-9 17:52:55 ); 9. dt.Rows.Add(new object 1,赵九, 1,中大街1号,看书,逛街,游戏,-29.548,2011-8-9 20:52:55 ); /格式增加dt.Columns.Add(数据,typeof(decimal);dt.Columns.Add(时间,typeof(DateTime);dt.Columns.Add(自定义,typeof(string);dt.Rows.Add(new object 1, 张三, 1,东大街6号,看书,-52.874,2011-8-5 17:52:55,# );dt.Rows.Add(new object 1, 王五, 0,西大街2号,上网,游戏, -37.257,2011-8-5 17:52:55 );dt.Rows.Add(new object 1, 李四, 1,南大街3号,上网,逛街, -54.254,2011-8-9 17:52:55 );dt.Rows.Add(new object 1, 钱八, 0,北大街5号,上网,逛街,看书,游戏,-35.127,2011-8-9 17:52:55 );dt.Rows.Add(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, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgse) 2. 3. if(e.Column.FieldName =sex) 4. 5. switch(e.Value.ToString().Trim() 6. 7. case1: 8. e.DisplayText = 男; 9. break; 10. case0: 11. e.DisplayText = 女; 12. break; 13. default: 14. e.DisplayText = ; 15. break; 16. 17. 18. private voidgridView1_CustomColumnDisplayText(objectsender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgse) if(e.Column.FieldName =sex) switch(e.Value.ToString().Trim() case1: e.DisplayText = 男; break; case0: e.DisplayText = 女; break; default: e.DisplayText = ; break; 显示结果:GridControl详解(四)分组排序汇总 分组:按时间分第一组:按性别分第二组:显示结果:高级设置:将所有组展开代码:gridView1.ExpandAllGroups();显示结果:自定义组名,GridView级事件 增加事件:csharp view plaincopyprint?1. private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e) 2. 3. GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo; 4. GridGroupRowInfo.GroupText = 第 + (e.RowHandle).ToString() + 行 + GridGroupRowInfo.EditValue.ToString(); 5. private void gridView1_CustomDrawGroupRow(object sender, DevExpress.XtraGrid.Views.Base.RowObjectCustomDrawEventArgs e) GridGroupRowInfo GridGroupRowInfo = e.Info as GridGroupRowInfo; GridGroupRowInfo.GroupText = 第 + (e.RowHandle).ToString() + 行 + GridGroupRowInfo.EditValue.ToString();显示结果:注意:每一行都有一个RowHandle属性,普通行的RowHandle为非负整数,从0开始;组行排序:排序设置显示结果:汇总:汇总数据列设置注意:汇总结果是显示在Footer面板中的,gridControl中的Footer面板默认是不显示的,所以如果要汇总数据,那么必须先设置Footer面板显示。显示结果: 组计:代码:csharp view plaincopyprint?1. gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, 数据, gridColumn7, 组计:0); gridView1.GroupSummary.Add(DevExpress.Data.SummaryItemType.Sum, 数据, gridColumn7, 组计:0);结果显示GridControl详解(五)设置行备注和行号 备注显示设置设置备注字段显示结果:可以写入按键事件F3,用以开关备注显示csharp view plaincopyprint?1. private void Form4_KeyUp(object sender, KeyEventArgs e) 2. 3. if (e.KeyCode = Keys.F3) 4. 5. gridView1.OptionsView.ShowPreview = !gridView1.OptionsView.ShowPreview; 6. 7. private void Form4_KeyUp(object sender, KeyEventArgs e) if (e.KeyCode = Keys.F3) gridView1.OptionsView.ShowPreview = !gridView1.OptionsView.ShowPreview; 行号显示要用到的事件:代码:csharp view plaincopyprint?1. private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) 2. 3. if (e.Info.IsRowIndicator) 4. 5. e.Info.DisplayText = Row + e.RowHandle.ToString(); 6. 7. 8. gridView1.IndicatorWidth = 70; private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) if (e.Info.IsRowIndicator) e.Info.DisplayText = Row + e.RowHandle.ToString(); gridView1.IndicatorWidth = 70;显示结果GridControl详解(六)样式设置 表格样式:全局设置例子:例子:列样式:只作用于当前的列通用样式:外观设定注意:样式设定都是相同的,Appearance前缀。GridControl详解(七)事件 csharp view plaincopyprint?1. private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) 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. private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) 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. private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) 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) /点击的单元格所属列信息 private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) 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 view plaincopyprint?1. private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 2. 3. if (e.Column.FieldName = 数据) 4. 5. GridCellInfo GridCellInfo = e.Cell as GridCellInfo; 6. if (GridCellInfo.IsDataCell & double.Parse(GridCellInfo.CellValue.ToString() -30 9. & double.Parse(GridCellInfo.CellValue.ToString() -50) 12. e.Appearance.BackColor = Color.Red; 13. 14. private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) if (e.Column.FieldName = 数据) GridCellInfo GridCellInfo = e.Cell as GridCellInfo; if (GridCellInfo.IsDataCell & double.Parse(GridCellInfo.CellValue.ToString() -30 & double.Parse(GridCellInfo.CellValue.ToString() -50) e.Appearance.BackColor = Color.Red; 重新计算备注事件:gridView1_CalcPreviewText代码:csharp view plaincopyprint?1. private void gridView1_CalcPreviewText(object sender, DevExpress.XtraGrid.Views.Grid.CalcPreviewTextEventArgs e) 2. 3. DataRow dr = gridView1.GetDataRow(e.RowHandle); 4. e.PreviewText = drname.ToString() + : + draihao.ToString(); 5. private void gridView1_CalcPreviewText(object sender, DevExpress.XtraGrid.Views.Grid.CalcPreviewTextEventArgs e) DataRow dr = gridView1.GetDataRow(e.RowHandle); e.PreviewText = drname.ToString() + : + draihao.ToString();注意:GridView中大多数事件我们都会并且必须用到e这个参数,我们可以从e这个参数中获取很多信息,包括单元格、列、行、表格、GridControl的信息。我们要根据事件的意义来了解这个e是单元格级别的,或是行级别的,或是列级别的等,因为我们可以获取e的层级以上的信息,层级以下的信息就不能获取了。e中的属性都是大同小异,其中最常用的是e.RowHandle这个属性,它代表行号的意思,通过gridView1.GetDataRow(e.RowHandle)方法可以获得这一行的数据行DataRow;并以此来做很多操作。上述我们也说过组行的RowHandle为负数,我们通过GetDataRow获取数据行是错误的,这时我们通过gridView1.GetDataRowHandleByGroupRowHandle(e.RowHandle);方法来转化,这时得到的数据行是该组的第一行数据。在此我们需特别注意。如果加入上述转换,我们选择数据时每组第一行数据就会重复,我们要做去重复处理。皮肤设置GridControl详解(八)菜单 菜单控件拖入窗口中显示如下设置popupMenu设置barManager设置controller增加菜单项弹出配置窗口一般菜单项设置对应属性如下:对应事件:选择菜单项设置事件同上,是否可见同上。子菜单项设置是否可见同上,很少去写他的点击事件,一般都写的是他的子菜单中点击事件。编辑菜单项设置菜单分组设置GridControl详解(九)表格中的控件选择完成控件后,可用+号点开ColumnEdit列,改控件的类型是RepositoryItem类型的,其相应的属性和相应的控件属性是类似的构建数据如下:csharp view plaincopyprint?1. DataTable dt = new DataTable(); 2. dt.Columns.Add(名称); 3. dt.Columns.Add(范围); 4. dt.Columns.Add(小区总数); 5. dt.Columns.Add(类型); 6. dt.Columns.Add(子类型); 7. dt.Columns.Add(子片区数量); 8. dt.Columns.Add(责任人); 9. dt.Columns.Add(编号); 10. dt.Columns.Add(选择); 11.12. dt.Rows.Add(new object 片区1, 范围, 5, 线, 普通公路, 5, qiangfei, 1, 0 ); 13. dt.Rows.Add(new object 片区2, 范围, 5, 线, 普通公路, 5, qiangfei, 2, 0 ); 14. dt.Rows.Add(new object 片区3, 范围, 5, 线, 普通公路, 5, qiangfei, 3, 1 ); 15. dt.Rows.Add(new object 片区4, 范围, 5, 线, 普通公路, 5, qiangfei, 4, 1 ); 16. dt.Rows.Add(new object 片区5, 范围, 5, 线, 普通公路, 5, qiangfei, 5, 0 ); 17. dt.Rows.Add(new object 片区6, 范围, 5, 线, 普通公路, 5, qiangfei, 6, 1 ); 18. dt.Rows.Add(new object 片区7, 范围, 5, 线, 普通公路, 5, qiangfei, 7, 1 ); 19. dt.Rows.Add(new object 片区8, 范围, 5, 线, 普通公路, 5, qiangfei, 8, 0 ); 20. dt.Rows.Add(new object 片区9, 范围, 5, 线, 普通公路, 5, qiangfei, 9, 0 ); 21. dt.Rows.Add(new object 片区10, 范围, 5, 线, 普通公路, 5, qiangfei, 10, 1 ); 22. dt.Rows.Add(new object 片区11, 范围, 5, 线, 普通公路, 5, qiangfei, 11, 1 ); 23. dt.Rows.Add(new object 片区12, 范围, 5, 线, 普通公路, 5, qiangfei, 12, 0 ); 24.25. gridControl1.DataSource = dt; DataTable dt = new DataTable(); dt.Columns.Add(名称); dt.Columns.Add(范围); dt.Columns.Add(小区总数); dt.Columns.Add(类型); dt.Columns.Add(子类型); dt.Columns.Add(子片区数量); dt.Columns.Add(责任人); dt.Columns.Add(编号); dt.Columns.Add(选择); dt.Rows.Add(new object 片区1, 范围, 5, 线, 普通公路, 5, qiangfei, 1, 0 ); dt.Rows.Add(new object 片区2, 范围, 5, 线, 普通公路, 5, qiangfei, 2, 0 ); dt.Rows.Add(new object 片区3, 范围, 5, 线, 普通公路, 5, qiangfei, 3, 1 ); dt.Rows.Add(new object 片区4, 范围, 5, 线, 普通公路, 5, qiangfei, 4, 1 ); dt.Rows.Add(new object 片区5, 范围, 5, 线, 普通公路, 5, qiangfei, 5, 0 ); dt.Rows.Add(new object 片区6, 范围, 5, 线, 普通公路, 5, qiangfei, 6, 1 ); dt.Rows.Add(new object 片区7, 范围, 5, 线, 普通公路, 5, qiangfei, 7, 1 ); dt.Rows.Add(new object 片区8, 范围, 5, 线, 普通公路, 5, qiangfei, 8, 0 ); dt.Rows.Add(new object 片区9, 范围, 5, 线, 普通公路, 5, qiangfei, 9, 0 ); dt.Rows.Add(new object 片区10, 范围, 5, 线, 普通公路, 5, qiangfei, 10, 1 ); dt.Rows.Add(new object 片区11, 范围, 5, 线, 普通公路, 5, qiangfei, 11, 1 ); dt.Rows.Add(new object 片区12, 范围, 5, 线, 普通公路, 5, qiangfei, 12, 0 ); gridControl1.DataSource = dt;注意:我们表格中【选择】一列的值是字符串型,那么表格中设置的类型也必须是字符串型。类型必须统一。 结果呈现:必要设置:【编辑】属性我们如果添加了选择框列,肯定要对选择列可用进行点击选中的操作,所以我们必须先打开表格的可编辑状态。但是这样每一列都可以编辑,所以要关闭其他列的可编辑状态。这样我们就可以操作选择列,而其他列不可编辑。由此我们可以看出gridview上的Editable属性控制大于列的AllowEdit属性。进阶:当我们点击某一行的选择列checkbox控件是,其绑定的值也会发生变化,联动其datatable中的值也会发生变化,即选中时,datatable对应的值会变成1;未选中时,其值为0。那么我们可以通过如下代码获取选中的所有信息;DataRow drs = dt.Select(选择=1);GridControl详解(十)BandedGridView 转换结果:运行结果呈现:GridControl详解(附)表格属性一览 Options OptionsBehavior 视图的行为选项AllowIncrementalSearch 允许用户通过输入想得到的列值来定位行AllowPartialRedrawOnScrolling 允许视图在垂直滚动中局部刷新AutoExpandAllGroups 自动展开视图中的所有组AutoPopulateColumns 当视图中没有某些数据源中的字段时,在视图中自动创建这些列AutoSelectAllInEditor 在一个单元格编辑中,是否允许通过Enter或F2来选择该单元格的所有内容AutoUpdateTotalSummary 当列值发生改变时,自动更新汇总摘要数据CacheValuesOnRowUpdating 缓冲将被存入数据源的数据(当一行数据要存入到数据源时,Grid可以将它的值存入到一个内部的缓冲器中。这样,万一那行数据在存入时被数据源的检查机制清空了,还可以恢复)Editable 允许对单元格进行编辑EditorShowMode 设置鼠标激活单元格编辑器的模式FocusLeaveOnTab 如果在Grid中TAB键被禁止,是否在按下TAB键时将焦点移到下一个控件ImmediateUpdateRowPosition 因为排序、分组和过滤设置造成行的数据被修改时,是否立即更新一行的位置KeepFocusedRowOnUpdate 当后台的数据记录变化时,保持焦点行的焦点KeepGroupExpandedOnSorting 当数据进行排序时,保持行的扩展状态SmartVertScrollBar 设置是否能滚动视图到第一行和最后一行OptionsCustomization 访问视图的用户化操作AllowChangeBandParent 允许用户能够移动带子在父母中?AllowChangeColumnParent 允许用户能够在带子中移动列AllowColumnMoving 允许用户通过拖动列头来移动列AllowColumnResizing 允许用户修改列宽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省成都市天府新区2024-2025学年八年级下期学期末考试数学试卷(含答案)
- 汉字收集资料课件
- 北师大版五年级上册数学第一单元 小数除法 检测卷(无答案)
- 2025年黑龙江省佳木斯市二十中中考数学二模试卷(含答案)
- 总承包合同(合集15篇)
- 户口申请书15篇
- “一带一路”与中国企业社会责任知到智慧树答案
- 汉字书法课件模板楷书凌
- 汉堡店加盟商业模式
- 永州市教师消防知识培训课件
- 脓毒症抗炎治疗策略
- 财务岗位招聘笔试题与参考答案
- 电动汽车V2G技术
- 田忌赛马 同步分层作业(含答案)
- 高三年级年级主任工作计划
- 2023风光互补路灯设计方案
- jgj592023安全检查标准完整版
- 关节松动技术-上肢关节松动术(运动治疗技术)
- 2024CSCO肿瘤患者静脉血栓防治指南解读
- 供应商改善计划表
- DB11-T 1253-2022 地埋管地源热泵系统工程技术规范
评论
0/150
提交评论