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 ...
随机推荐
- Ubuntu:Docker启动与停止
安装完成Docker后,默认已经启动了docker服务,如需手动控制docker服务的启停,可执行如下命令 启动docker sudo service docker start 停止docker su ...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记4
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本.不过不用 ...
- [编程基础] Python配置文件读取库ConfigParser总结
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件. 文章目录 1 介绍 1.1 Python ConfigParser读取文件 1.2 Py ...
- CentOS7.6搭建Hadoop2.7.2运行环境-三节点集群模式
一 环境准备 1. 准备机器 2. 修改静态IP 3. 修改主机名 4. 关闭防火墙 5. 创建普通用户hadoop 添加hadoop用户 [root@hadoop102 ...
- python之路24之 面向对象动静态方法、继承、派生
昨日内容回顾 人狗大战 1.直接使用字典表示人和狗 p1 = {} p2 = {} p3 = {} p4 = {} 2.封装产生人和狗的函数 def crreate_person():pass def ...
- 關於ctype.h頭文件的一些函數
- ajax 用 get方法 验证登录
get-login-ajax.html --------------------------------------------- <body> <input type=" ...
- spring.jackson.default-property-inclusion 不生效问题分析
背景 项目里每个返回体里都有@JsonInclude(JsonInclude.Include.NON_NULL) 这个注解,也就是不返回null字段 想有没有办法全局配置一下,这样就不用每个类都加这个 ...
- 虚拟DOM中给同一层级的元素设置固定且唯一的key为什么能提高性能
一.文字 key让React知道,当前新生成的React元素中的元素,是否能在之前生成的React元素中找到对应的.如果有,那么直接拿过来用就行了.假设列表头部插入一项,通过比对,React知道除了头 ...
- zookeeper04---ZAB协议
转https://www.jianshu.com/p/2bceacd60b8a 1.什么是Zab协议 1.1Zab协议简介 1.2 Zab 协议的特性(怎么保持数据一致性) 2.Zab 协议实现的作用 ...