这里是把在表格中创建控件的方法封装成一个类,然后在创建列的时候实例化“创建控件”的方法

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下动态创建列的方法的更多相关文章

  1. 【Devexpress】Gridcontorl动态创建列不显示的问题

    通过代码创建列但是不显示,这个原因是因为代码创建的列Visible属性默认是false 所以需要设置为true就会显示了 gridColumn.Visible = true;

  2. 【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表

    提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图 ...

  3. Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法

    详细说明:Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法.该方法可以在运行时在内存中直接建立对话框资源,使用起来更为灵活.适用于多个开发项目共享有界面的公用程序模 ...

  4. cxgrid动态创建列

    cxgrid动态创建列 procedure TFrmRuleEdit.CreateCols;varColumn: TcxGridDBColumn;begincdsPowerPrj.First;whil ...

  5. odoo 动态创建字段的方法

    动态创建字段并非一个常见的的需求,但某些情况下,我们确实又需要动态地创建字段. Odoo 中创建字段的方法有两种,一种是通过python文件class中进行定义,另一种是在界面上手工创建,odoo通过 ...

  6. jQuery EasyUI中DataGird动态生成列的方法

    EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍Eas ...

  7. python-获取类名和方法名,动态创建类和方法及属性

    获取类名和方法名1.在函数外部获取函数名称,用.__name__获取2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取3.使用inspect模块动态 ...

  8. vue+el-element中根据文件名动态创建dialog的方法

    背景 在项目中使用对话框的通常做法是把对话框封装成组件,在使用的地方引入,然后添加到template,使用visible.sync控制对话框的显示/隐藏,监听confirm事件处理用户点击确定.如下: ...

  9. DevExpress gridControl控件动态绑定列 zt

    DataTable dt = =Query.GetCustome=(ref customColumnCount); //绑定列 gridView.Columns.Add(}); gridView.Co ...

  10. 解决Chrome Safari Opera环境下 动态创建iframe onload事件同步执行

    我们先看下面的代码: setTimeout(function(){ alert(count); },2000); var count = []; document.body.appendChild(c ...

随机推荐

  1. 【转载】github.com访问慢解决办法

    打开网站 IPAddress.com ,找到页面中下方的"IP Address Tools – Quick Links" 分别输入github.global.ssl.fastly. ...

  2. C语言两结构体之间的成员互换

    今天在写一个通讯录实现程序的时候,遇到个让我突然卡壳的问题,不知道怎么进行两个结构体之间的成员互换......结构体成员有"姓名","性别","年龄& ...

  3. org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive

    昨天23点给一个老项目改完打包发布到云服务器后报错,Tomcat9 启动不了,白折腾了我几个小时. 这错误以前遇到过,由于太过久远已经忘记,特此记录 错误日志 22-Dec-2021 23:52:18 ...

  4. elasticsearch实现基于拼音搜索

    目录 1.背景 2.安装拼音分词器 3.拼音分词器提供的功能 4.简单测试一下拼音分词器 4.1 dsl 4.2 运行结果 5.es中分词器的组成 6.自定义一个分词器实现拼音和中文的搜索 1.创建m ...

  5. 腾讯微信开源数据库PhxSQL简单部署记录

    1.建立文件夹与互信关系 [root@mysql-100 ~]# mkdir -p /app/soft/phxsql [root@mysql-100 phxsql]# ssh-keygen -t rs ...

  6. 【教程搬运】分析并编写suricata规则(内含两个示例)

    suricata规则分析 参考1 参考2 Suricata 签名的结构 在高层次上,Suricata签名由三部分组成: Action:当流量符合规则时采取的行动 Header:一个标题,描述主机.IP ...

  7. 聊聊JUC包下的底层支撑类-AbstractQueuedSynchronizer(AQS)

    聊聊JUC包下的底层支撑类-AbstractQueuedSynchronizer(AQS) juc包下的一堆并发工具类是我们日常开发特别是面试中常被拿来问的八股文之一,为了工作也好,为了面试也罢,今天 ...

  8. Rust Rand生成随机数

    # in project file cargo add rand extern crate rand; use rand::Rng; fn main() { let mut rng = rand::t ...

  9. Seal 0.4 发布:软件供应链安全洞察更上一层楼!

    今天,我们很高兴宣布 Seal 0.4 已正式发布!在上一个版本中,Seal 完成了从单一产品到全链路平台的转变,通过全局视图帮助用户掌握软件开发生命周期各个环节的安全状况. 在 Seal 0.4 中 ...

  10. .NET Core Redis的简单使用

    1.Redis简介 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. 2.Redis主要特点 Redis支持数据的持久化 Redis支持多种数据结构 Redi ...