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 ...
随机推荐
- vite+ts+vue3+router4+Pinia+ElmPlus+axios+mock项目基本配置
1.vite+TS+Vue3 npm create vite Project name:... yourProjectName Select a framework:>>Vue Selec ...
- 痞子衡嵌入式:Farewell, 我的写博故事2016-2019
-- 题图:苏州天平山枫叶 现在是 2022 年末,痞子衡又要起笔博文年终总结了,看着 2020 年之前的博文总结缺失,始终觉得缺憾,所以写下此篇 2016 - 2019 总结合辑.2016 年之前, ...
- 掌握webpack(一)一张图让你明白webpack中output的filename、path、publicPath与主流插件的关系
webpack的核心概念,放到2022年相信很多的小伙伴都已经非常清楚了.但是,对于webpack配置中的output.path.output.filename以及output.publicPath, ...
- [python] 基于matplotlib实现圆环图的绘制
圆环图本质上是一个中间切出一块区域的饼状图.可以使用python和matplotlib库来实现.本文主要介绍基于matplotlib实现圆环图.本文所有代码见:Python-Study-Notes # ...
- 真正“搞”懂HTTP协议07之队头阻塞真的很烦人
这一篇文章,我们核心要聊的事情就是HTTP的对头阻塞问题,因为HTTP的核心改进其实就是在解决HTTP的队头阻塞.所以,我们会讲的理论多一些,而实践其实很少,要学习的头字段也只有一个,我会在最开始就讲 ...
- 除了Navicat和DBeaver,还有没有免费又好用的数据库管理/SQL工具推荐
很多国内SQL学习者和开发者对Navicat.DBeaver等国外数据库管理工具已经很熟悉了.但是,有没有比他们更适合SQL开发者的数据库管理/SQL工具呢?这里,笔者结合自己的调研来聊一下. 笔者做 ...
- linux基础(部分讲解)
linux常见岗位 Linux运维工程师.Linux高级架构师.运维开发工程师.数据库管理员.云计算架构师 作为python后端可以从事的linux岗位: 自动化运维.容器运维.DBA 注意:会的越多 ...
- Unity_UIWidgets - 按钮组件IconButton
Unity_UIWidgets - 按钮组件IconButton 按钮组件IconButton IconButton 结尾 QQ 今日无推荐 按钮组件IconButton 既然上周给大家介绍了ICON ...
- HTTP协议拓展
本文详细介绍了 HTTPS 相较于 HTTP 更安全的原因,包括对称加密.非对称加密.完整性摘要.数字证书以及 SSL/TLS 握手等内容,图文并茂.理论与实战结合.建议收藏! 1. 不安全的 HTT ...
- webpack核心用法,为什么要使用webpack
一:为什么使用webpack 1. 代码转换.文件优化.代码分割.模块合并.自动刷新.等等 2. webpack上手 <!DOCTYPE html> <html lang=" ...