恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【DevExpress中文教程】在GridView中动态创建列时如何绑定不同编辑处理控件

  • 首页
  • 资讯中心
  • /
  • 【DevExpress中文教程】在GridView中动态创建列时如何绑定不同编辑处理控件

相关资讯

成本陷阱(上):开源模型的蜜糖,Token工厂的砒霜! 2026/8/6 17:36:35
终极AI角色扮演神器:SillyTavern新手完全指南 2026/8/6 17:36:35
STM32智能快递柜外卖存取柜GSM短信设计190-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_ 2026/8/6 17:36:35

最新资讯

Unity游戏多语言实时翻译插件XUnity.AutoTranslator实战指南
Gride++report6表格数据绑定与合计功能实现详解
Unity DragonBones换装系统性能优化:动态加载与内存管理实战
为什么选择GR00T-N1.6-BEHAVIOR1k?三大革命性优势助力机器人开发者突破瓶颈
深度学习图像分类头设计:从原理到实战调优指南
AI 电动家纺落地扇智能功率 MOSFET 完整选型方案

今日推荐

电力系统调度中的源荷不确定性建模与优化实践
VGG-T3技术解析:3D重建速度的革命性突破
深度解析旅游网站建设的意义及其对行业发展的深远影响与核心价值体现

本周热门

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案
分布式配置中心选型实战:Nacos与Consul在创业场景下的对比
MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

【DevExpress中文教程】在GridView中动态创建列时如何绑定不同编辑处理控件

发布时间:2026/8/6 17:41:35
【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

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号