【DevExpress中文教程】在GridView中动态创建列时如何绑定不同编辑处理控件
在使用DevExpress GridView时为了方便往往使用一些扩展函数动态创建GridView列的编辑控件对象然后我们可以灵活的对内容进行编辑或者使用一些弹出的对话框窗体进行处理内容的录入本文就是介绍这一主题在DevExpress的GridView的列中动态创建列的时候绑定不同的编辑处理控件。DevExpress拥有.NET开发需要的所有平台控件包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。DevExpress新旧版本帮助文档下载可进QQ qun获取1697253161. 使用扩展函数动态创建列我们创建列为了绑定相应的数据源信息展示一般指定列的名称和显示的列标题名称如下是一个简单的列创建处理代码。grv.CreateColumn(Note, 备注说明);如果赢绑定了数据源我们也可以根据列的FieldName进行获得列的控制权然后给它指定不同的编辑控件如下所示。gridview.Columns.ColumnByFieldName(Introduction).CreateMemoEdit();上面的CreateMemoEdit()函数就是一个简单的扩展函数用于创建一个备注列的处理它的编辑器控件 RepositoryItemMemoEdit 的RepositoryItem 扩展对象扩展函数如下所示的代码。/// summary /// 创建GridView的列编辑为MemoEdit /// /summary /// param namegridColumnGridColumn列对象/param /// returns/returns public static RepositoryItemMemoEdit CreateMemoEdit(this GridColumn gridColumn) { RepositoryItemMemoEdit repositoryItem new RepositoryItemMemoEdit { AutoHeight false, LinesCount 0 }; gridColumn.View.GridControl.RepositoryItems.Add(repositoryItem); gridColumn.ColumnEdit repositoryItem; return repositoryItem; }我们把它们这些扩展函数定义在不同的类文件中使用静态类就可以了。例如对于GridControl和GridView的相关处理扩展函数把它整理放在一个类文件中定义各种方便使用的方法即可如下所示。对于一些简单的录入我们保留让他使用默认文本输入框即可如下所示代码。this.gridViewRequisition.CreateColumn(需求金额, 需求金额, 80); this.gridViewRequisition.CreateColumn(采购数量, 采购数量, 80); this.gridViewRequisition.CreateColumn(采购金额, 采购金额, 80); this.gridViewRequisition.CreateColumn(库存数量, 库存数量, 80); this.gridViewRequisition.CreateColumn(可用库存, 可用库存, 80);当然如果我们想获得对应列的一些特殊的处理那么可以把获得的列对象赋值给变量然后进行相关的属性处理。var colQuantity grv.CreateColumn(Quantity, 销售数量); colQuantity.AppearanceCell.BackColor Color.Moccasin; colQuantity.AppearanceCell.Options.UseBackColor true; colQuantity.CreateSpinEdit();而对于一些特殊的列如一些下拉列表的列我们可以指定他们的下拉列表可以是固定列表也可以通过函数获取数据库的记录进行绑定处理如下所示。var purchaseType this.gridViewRequisition.CreateColumn(采购类型, 采购类型, 80).CreateGridLookUpEdit(); var typeList new ListCListItem() { new CListItem(正品), new CListItem(样品), new CListItem(免费) }; purchaseType.BindDictItems(typeList, false);而如果备注处理嫌GridView里面输入太麻烦可以使用弹出的对话框进行处理如下代码所示。var note this.gridViewRequisition.CreateColumn(备注, 备注, 100).CreateButtonEdit(); note.EditValueChanging (ss, ee) { gridViewRequisition.SetFocusedRowCellValue(备注, ee.NewValue); }; note.ButtonClick (ss, ee) { var dlg new FrmShowTextEdit(); dlg.FieldDefaultValue gridViewRequisition.GetFocusedRowCellDisplayText(备注); dlg.FieldDisplayName 备注; if (dlg.ShowDialog() DialogResult.OK) { gridViewRequisition.SetFocusedRowCellValue(备注, dlg.ReturnValue); } };弹出界面如下所示。或者有时候我们使用一些其他的选择对话框也是类似的处理方式。gridview.Columns.ColumnByFieldName(Creator).CreateButtonEdit().ButtonClick (object sender, ButtonPressedEventArgs e) { FrmSelectCustomer dlg new FrmSelectCustomer(); if(dlg.ShowDialog() System.Windows.Forms.DialogResult.OK) { if(gridview.GetFocusedRow() null) { gridview.AddNewRow();//如果首次则增加一行 } gridview.SetFocusedRowCellValue(Creator, dlg.CustomerName); } };如一些列表也可以使用LookupEdit的编辑控件进行处理选择的展示。如果我们希望对列表的特定字段进行启用编辑那么可以利用下面扩展函数方式实现。//设置只读、可编辑字段 this.gridViewAmount.SetColumnsReadOnly(*, false); this.gridViewAmount.SetColumnsReadOnly(序列,采购类型,需求量,备注, true);如果需要指定特定的汇总字段可以通过下面代码实现。// 设置统计字段 if (gridViewAmount?.Columns.Count 0) { gridViewAmount.ClearSummaryColumns(); gridViewAmount.SetSummaryColumn(采购数量, DevExpress.Data.SummaryItemType.Sum); }2. 列内容的格式处理在上面动态创建的列编辑控件对于编辑的值发生变化需要及时的反映到实际的列表对应的单元格的值中一般在事件EditValueChanging 中通过SetFocusedRowCellValue 就可以设置回去了如下代码所示。var note this.gridViewRequisition.CreateColumn(备注, 备注, 100).CreateButtonEdit(); note.EditValueChanging (ss, ee) { gridViewRequisition.SetFocusedRowCellValue(备注, ee.NewValue); };而对于一些数值型的内容处理如SpinEdit的编辑器控件那么每次输入一个不同的字符都会触发这个处理那么就有点不正常的了因此可以通过下面的方式进行矫正利用EditValueChanged事件的处理。var xuqiuLiang this.gridViewRequisition.CreateColumn(需求数量, 需求数量, 80).CreateSpinEdit(); xuqiuLiang.ValidateOnEnterKey true; xuqiuLiang.EditValueChanged async (ss, ee) { var value ((ss) as SpinEdit).Value; this.gridViewRequisition.SetFocusedRowCellValue(需求数量, value); //刷新显示 gridViewRequisition.RefreshRow(gridViewRequisition.FocusedRowHandle); };上面的代码通过把对应的当前控件转换为编辑器控件获得值再行处理也是可以的。另外有时候如果列的内容变更了我们需要及时刷新指定列表行的内容可以通过下面的代码实现的。gridViewRequisition.RefreshRow(gridViewRequisition.FocusedRowHandle);对于一些列表需要给它指定删除的操作方便移除整条记录那么为它添加删除键即可如下代码所示。//行删除操作 this.gridViewRequisition.OptionsBehavior.AllowDeleteRows DefaultBoolean.True; this.gridViewRequisition.KeyDown (s, ee) { if (ee.KeyCode Keys.Delete) {//移除记录 gridViewRequisition.DeleteRow(gridViewRequisition.FocusedRowHandle); gridViewRequisition.RefreshData(); ee.Handled true; } };而对于列的一些格式转义操作我们可以统一处理可以把几个不同的GridView的转义函数放在一起。//统一处理转义信息 this.gridViewRequisition.CustomColumnDisplayText CustomColumnDisplayText; this.gridViewSubx.CustomColumnDisplayText CustomColumnDisplayText; this.gridViewSpecification.CustomColumnDisplayText CustomColumnDisplayText;转义一般对日期的格式和数值型的格式进行一些格式化处理如下代码所示。private void CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e) { string columnName e.Column.FieldName; if (e.Column.ColumnType typeof(DateTime) || e.Column.ColumnType typeof(DateTime?)) { if (e.Value ! null) { if (e.Value DBNull.Value || Convert.ToDateTime(e.Value) Convert.ToDateTime(1900-1-1)) { e.DisplayText ; } else { e.DisplayText Convert.ToDateTime(e.Value).ToString(yyyy-MM-dd HH:mm);//yyyy-MM-dd } } } else if (e.Column.ColumnType typeof(decimal) || e.Column.ColumnType typeof(decimal?)) { decimal value; if (decimal.TryParse(e.DisplayText, out value)) { e.DisplayText value.ToString(0.################); } } }而如果喜欢对列的背景色等进行自定义可以在事件RowCellStyle中根据不同的字段名称进行处理。this.gridViewSpecification.RowCellStyle (s, e) { e.Appearance.BackColor Color.Transparent; if (e.Column.FieldName 序列) { var xulie string.Concat(gridViewSubx.GetFocusedRowCellValue(序列)); if (!xulie.IsNullOrEmpty() e.CellValue?.ToString() xulie) { e.Appearance.BackColor Color.Red; //醒目颜色 } } };有时候我们需要反色当前选择的单元格那么可以通过事件CustomDrawCell 进行控制如下代码所示。this.gridView1.CustomDrawCell (s, e) { // 设置选中单元格的背景颜色 if (e.Column gridView1.FocusedColumn e.RowHandle gridView1.FocusedRowHandle) { e.Appearance.BackColor Color.LightGreen; } };以上就是一些利用GridView进行处理的一些经验代码总结希望对您有所启发。本文转载自博客园 - 伍华聪https://www.cnblogs.com/wuhuacong/p/17566150.html

相关新闻

2026年遮光缠绕膜定做厂家该怎么选

2026年遮光缠绕膜定做厂家该怎么选

随着工业包装对产品防护与仓储管理要求的不断提升,遮光缠绕膜作为一种兼具拉伸包装与光敏防护功能的材料,正逐步成为冷链物流、电子元件、化工原料等领域的“刚需”产品。当时间节点来到2026年,采购方在选择定做厂家时,已不再单纯…

2026/8/6 17:40:34 阅读更多 →
[1214]基于Python实现视频去重

[1214]基于Python实现视频去重

文章目录videohash2🛠️ 安装🎬 基本用法🤝 比较视频:如何判断相似📚 进阶用法⚠️ 使用限制💡 与另一个分支的区别基于Python实现视频去重基本原理实现方法其它视频去重codevideohash2 https://github.com…

2026/8/6 17:40:34 阅读更多 →
终极免费跨平台智能下载器:3分钟上手获取视频号、抖音、快手等全网资源

终极免费跨平台智能下载器:3分钟上手获取视频号、抖音、快手等全网资源

终极免费跨平台智能下载器:3分钟上手获取视频号、抖音、快手等全网资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader…

2026/8/6 17:40:34 阅读更多 →

最新新闻

OSkhQuant:让量化交易像搭积木一样简单

OSkhQuant:让量化交易像搭积木一样简单

OSkhQuant:让量化交易像搭积木一样简单 【免费下载链接】OSkhQuant 看海量化回测系统(看海量化交易系统)开源代码,khQuant框架,实现A股可视化回测,全部开源。 项目地址: https://gitcode.com/gh_mirrors/…

2026/8/6 18:27:56 阅读更多 →
安装 qt 使用清华镜像源

安装 qt 使用清华镜像源

在线安装器下载 链接:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 下载对应的版本 打开系统终端,执行命令进行安装(windows类似)添加可执行权限 chmod x qt-unified-linux-x64-online.run添…

2026/8/6 18:27:56 阅读更多 →
MuseTalk实战指南:从零掌握实时高质量唇语同步技术

MuseTalk实战指南:从零掌握实时高质量唇语同步技术

MuseTalk实战指南:从零掌握实时高质量唇语同步技术 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk MuseTalk是腾讯音乐娱乐集团Lyra实…

2026/8/6 18:27:56 阅读更多 →
影视仓最新配置接口2026 tvbox源配置地址

影视仓最新配置接口2026 tvbox源配置地址

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、软件介绍演变过程实用之道进阶之路二、使用步骤影视仓TV版:★★★分享——整理的仓库接口,以供学习研究★★★一、软件介绍 影视仓是一款…

2026/8/6 18:27:56 阅读更多 →
基于Java的农场农业服务系统(Java+SSM+MySQL)| 计算机毕业设计 附源码论文PPT

基于Java的农场农业服务系统(Java+SSM+MySQL)| 计算机毕业设计 附源码论文PPT

本项目为计算机本科毕业设计,采用 Java SSM(Spring SpringMVC MyBatis) 作为后端框架,Vue.js 作为前端,数据库使用 MySQL。系统涵盖用户管理、种植户管理、农产品及农产品类型管理、农资产品及农资类型管理、农资技…

2026/8/6 18:27:56 阅读更多 →
三个月狂烧1068亿押注AI,市值一夜缩水8772亿:马斯克在给黄仁勋“打工“?

三个月狂烧1068亿押注AI,市值一夜缩水8772亿:马斯克在给黄仁勋“打工“?

SpaceX上市后首份成绩单出炉:营收近乎翻倍,股价却盘后暴跌8%。问题出在哪?8月5日消息,就在今天,SpaceX交出了其上市以来的第一份季度财报。单看营收数字,这份成绩单堪称亮眼:2026年第二季度&…

2026/8/6 18:26:55 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →