C# DevExpress GridControl下动态创建列的方法
这里是把在表格中创建控件的方法封装成一个类,然后在创建列的时候实例化“创建控件”的方法
1.在列中使用一些按钮
1 using Common;
2 using DevExpress.XtraEditors;
3 using DevExpress.XtraEditors.Controls;
4 using DevExpress.XtraEditors.Repository;
5 using DevExpress.XtraGrid;
6 using DevExpress.XtraGrid.Views.Grid;
7 using GyMxErpCs;
8 using System;
9 using System.Collections.Generic;
10 using System.Linq;
11 using System.Text;
12 using System.Threading.Tasks;
13 using System.Windows.Forms;
14
15 namespace Semo
16 {
17 public class SheetControl
18 {
19 /// <summary>
20 /// 日期格式控件
21 /// </summary>
22 public DevExpress.XtraEditors.Repository.RepositoryItemTextEdit dateTextFormat;
23 /// <summary>
24 /// 删除、修改(查看)按钮
25 /// </summary>
26 public DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit checkButton;
27 /// <summary>
28 /// 超链接控件
29 /// </summary>
30 public DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit hyperlinks;
31 /// <summary>
32 /// 删除控件(用于明细)
33 /// </summary>
34 public DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit deleteButton;
35 /// <summary>
36 /// int类型格式控件
37 /// </summary>
38 public DevExpress.XtraEditors.Repository.RepositoryItemTextEdit intTextFormat;
39 /// <summary>
40 /// 检索控件
41 /// </summary>
42 public DevExpress.XtraEditors.Repository.RepositoryItemTextEdit searchText;
43 /// <summary>
44 /// 复选框
45 /// </summary>
46 public DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit checkbox;
47
48 /// <summary>
49 /// 下拉控件
50 /// </summary>
51 public DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit lookUpEdit;
52 /// <summary>
53 /// 文本显示控件
54 /// </summary>
55 public DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit memoEdit;
56 private string strMenuPowerAuth = string.Empty;
57 private GridControl gridControl;
58 private object obj;
59 /// <summary>
60 ///
61 /// </summary>
62 /// <param name="gridControl">GridControl控件名称</param>
63 public SheetControl(GridControl gridControl)
64 {
65 this.gridControl = gridControl;
66 InitControl();
67 }
68 private void InitControl()
69 {
70 #region 日期格式控件
71 dateTextFormat = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
72 dateTextFormat.AutoHeight = false;
73 dateTextFormat.Mask.EditMask = "yyyy-MM-dd";
74 dateTextFormat.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.DateTime;
75 dateTextFormat.Mask.UseMaskAsDisplayFormat = true;
76 dateTextFormat.Name = "dateTextFormat";
77 #endregion
78
79 #region 删除、查看(修改)
80 Dictionary<object, string> checkButtons = new Dictionary<object, string>();
81 if (strMenuPowerAuth.Equals("ck"))
82 {
83 checkButtons.Add("download", "查看");
84 }
85 else if (strMenuPowerAuth.Equals("edit"))
86 {
87 checkButtons.Add("download", "修改");
88 checkButtons.Add("delete", "删除");
89 }
90 checkButton = CreateRepositoryItemButtonEdit(checkButtons);
91 gridControl.RepositoryItems.Add(checkButton);
92 #endregion
93
94 #region 明细删除
95 Dictionary<object, string> delButtons = new Dictionary<object, string>();
96 delButtons.Add("deletes", "删除");
97 deleteButton = CreateRepositoryItemButtonEdit(delButtons, 1);
98 gridControl.RepositoryItems.Add(deleteButton);
99 #endregion
100
101 #region 超链接按钮
102 hyperlinks = new DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit();
103 hyperlinks.AutoHeight = false;
104 hyperlinks.Name = "hyperlinks";
105 #endregion
106
107 #region 检索控件
108 searchText = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
109 searchText.AutoHeight = false;
110 searchText.Name = "searchText";
111 //searchTextEdit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.searchTextEdit_KeyDown);
112 #endregion
113
114 #region Int格式化控件
115 intTextFormat = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
116 intTextFormat.AutoHeight = false;
117 intTextFormat.Mask.EditMask = "n2";
118 intTextFormat.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
119 intTextFormat.Mask.UseMaskAsDisplayFormat = true;
120 intTextFormat.Name = "intTextFormat";
121 #endregion
122
123 #region 复选框
124 checkbox = new RepositoryItemCheckEdit();
125 #endregion
126
127 #region 下拉格式控件
128 lookUpEdit = new DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit();
129 lookUpEdit.AutoHeight = false;
130 //lookUpEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
131 //new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
132 lookUpEdit.Columns.AddRange(new DevExpress.XtraEditors.Controls.LookUpColumnInfo[] {
133 new DevExpress.XtraEditors.Controls.LookUpColumnInfo("value", "value")});
134 lookUpEdit.Name = "lookUpEdit";
135 lookUpEdit.NullText = "";
136 lookUpEdit.ShowHeader = false;
137 #endregion
138
139 #region 文本显示控件
140 memoEdit = new DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit();
141 memoEdit.AutoHeight = false;
142 memoEdit.Name = "memoEdit";
143 #endregion
144 }
145 //使用图标
146 //System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPoductionAddt));
147 //创建按钮
148 private RepositoryItemButtonEdit CreateRepositoryItemButtonEdit(Dictionary<object, string> dicButtons, int ifImage = 0)
149 {
150 RepositoryItemButtonEdit repositoryBtn = new RepositoryItemButtonEdit();
151 repositoryBtn.AutoHeight = false;
152 repositoryBtn.TextEditStyle = TextEditStyles.HideTextEditor;
153 repositoryBtn.ButtonsStyle = BorderStyles.NoBorder;
154 repositoryBtn.Buttons.Clear();
155 EditorButton btn = null;
156 foreach (KeyValuePair<object, string> item in dicButtons)
157 {
158 btn = new EditorButton();
159 if (ifImage == 1)
160 {
161 btn.Image = ((System.Drawing.Image)(resources.GetObject("repositoryBtn.Buttons")));
162 btn.ImageLocation = ImageLocation.Default;
163 }
164 btn.Kind = ButtonPredefines.Glyph;
165 btn.Caption = item.Value;
166 btn.Tag = item.Key;
167 repositoryBtn.Buttons.Add(btn);
168 }
169 return repositoryBtn;
170 }
171 }
172 }
表格创建中控件
2.创建添加DataTable数据源
1 //添加表
2 private void CreateData()
3 {
4 //新建一个dt对象
5 DataTable dt = new DataTable();
6 dt.Columns.Add("retrieve", Type.GetType("System.String"));//检索
7 dt.Columns.Add("coding", Type.GetType("System.String"));//编码
8 dt.Columns.Add("name", Type.GetType("System.String"));//名称
9 dt.Columns.Add("quantity", Type.GetType("System.Double"));//数量
10 dt.Columns.Add("id", Type.GetType("System.String"));//数量
11 CreateList();//创建列
12 this.gridData.DataSource = dt;
13 }
创建DataTable
3.创建列
1 //创建列
2 private void CreateList()
3 {
4 SheetControl = new SheetControl(this.gridData);
5 #region 初始化表头
6 GridColumn retrieve = new GridColumn();
7 retrieve.Caption = "操作";
8 retrieve.FieldName = "retrieve";
9 retrieve.VisibleIndex = 0;
10 retrieve.ColumnEdit = tableControl.deleteButton;
11 retrieve.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] {
12 new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Average, "retrieve", "合计")});
13 this.gridView1.Columns.Add(retrieve);
14
15 GridColumn coding = new GridColumn();
16 coding.Caption = "编码";
17 coding.FieldName = "coding";
18 coding.Width = 70;
19 coding.VisibleIndex = 30;
20 coding.ColumnEdit = tableControl.searchText;
21 this.gridView1.Columns.Add(coding);
22
23 GridColumn name = new GridColumn();
24 name.Caption = "名称";
25 name.FieldName = "name";
26 name.Width = 120;
27 name.VisibleIndex = 32;
28 name.OptionsColumn.AllowEdit = false;
29 name.ColumnEdit = tableControl.memoEdit;
30 name.AppearanceCell.Options.UseTextOptions = true;//自动换行
31 name.AppearanceCell.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;//自动换行
32 this.gridView1.Columns.Add(name);
33
34 GridColumn id = new GridColumn();
35 id.FieldName = "id";
36 id.Visible = false;
37 this.gridView1.Columns.Add(id);
38 #endregion
39 }
创建列
C# DevExpress GridControl下动态创建列的方法的更多相关文章
- 【Devexpress】Gridcontorl动态创建列不显示的问题
通过代码创建列但是不显示,这个原因是因为代码创建的列Visible属性默认是false 所以需要设置为true就会显示了 gridColumn.Visible = true;
- 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表
提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...
- Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法
详细说明:Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法.该方法可以在运行时在内存中直接建立对话框资源,使用起来更为灵活.适用于多个开发项目共享有界面的公用程序模 ...
- cxgrid动态创建列
cxgrid动态创建列 procedure TFrmRuleEdit.CreateCols;varColumn: TcxGridDBColumn;begincdsPowerPrj.First;whil ...
- odoo 动态创建字段的方法
动态创建字段并非一个常见的的需求,但某些情况下,我们确实又需要动态地创建字段. Odoo 中创建字段的方法有两种,一种是通过python文件class中进行定义,另一种是在界面上手工创建,odoo通过 ...
- jQuery EasyUI中DataGird动态生成列的方法
EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍Eas ...
- python-获取类名和方法名,动态创建类和方法及属性
获取类名和方法名1.在函数外部获取函数名称,用.__name__获取2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取3.使用inspect模块动态 ...
- vue+el-element中根据文件名动态创建dialog的方法
背景 在项目中使用对话框的通常做法是把对话框封装成组件,在使用的地方引入,然后添加到template,使用visible.sync控制对话框的显示/隐藏,监听confirm事件处理用户点击确定.如下: ...
- DevExpress gridControl控件动态绑定列 zt
DataTable dt = =Query.GetCustome=(ref customColumnCount); //绑定列 gridView.Columns.Add(}); gridView.Co ...
- 解决Chrome Safari Opera环境下 动态创建iframe onload事件同步执行
我们先看下面的代码: setTimeout(function(){ alert(count); },2000); var count = []; document.body.appendChild(c ...
随机推荐
- 《深度探索C++对象模型》第四章 Function语意学
member function相对于nonmember function之间不存在效率之间的差别,因为编译器内部已经将"member 函数实体"转化为对等的"nonmem ...
- 杂项 NOI2020 打铁记
杂项 NOI2020 打铁记 day -一个月 他一个月前,期末考试刚刚结束,开始了NOI2020的冲刺.虽然时间并不充足,但一想到一个月后能站在国赛的赛场上,与来自全国的高手们一较高下,他充满了干劲 ...
- 第一个C程序
写C代码 创建工作区 创建工程 创建文件(.c源文件..h头文件) main函数是程序执行的入口,有且只有一个 函数printf(print function打印函数)[库函数-C语言本身提供给我们使 ...
- djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令
djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令 一.web框架前戏 web 框架可以理解为是基于会联网的web服务端>>>socket服务端 1.w ...
- c++代码实现中时间复杂度的不断优化
先来介绍一下时间复杂度: 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率.算法分析的目的在于选择合适算法和改进算法. 计算机科学中,算法的时间复杂度是一个函数,它定量描述了该 ...
- 写出单个字符到文件-flush方法和close方法的区别
写出单个字符到文件 flush方法和close方法的区别 因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中.但是关闭的流对象,是无法继续写出数据的.如果我们既想写出数据,又想继续使用流,就 ...
- Windows10下yolov8 tensorrt模型加速部署【实战】
Windows10下yolov8 tensorrt模型加速部署[实战] TensorRT-Alpha基于tensorrt+cuda c++实现模型end2end的gpu加速,支持win10.linux ...
- 【分析笔记】Linux 4.9 backlight 子系统分析
相关信息 内核版本:Linux version 4.9.56 驱动文件:lichee\linux-4.9\drivers\video\backlight\backlight.c 驱动作用 对上,面对应 ...
- [DuckDB] 多核算子并行的源码解析
DuckDB 是近年来颇受关注的OLAP数据库,号称是OLAP领域的SQLite,以精巧简单,性能优异而著称.笔者前段时间在调研Doris的Pipeline的算子并行方案,而DuckDB基于论文< ...
- SpringCloud 消费请求Eureka调用服务提供者报错
SpringCloud 消费请求Eureka调用服务提供者报错 springCloud 2022.0.1 springboot 3.0.2 消费程序 通过eureka集群查询服务,根据eureka中注 ...