没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2025-03-04 11:19:09.000|阅读 33 次
概述:本文主要介绍如何使用DevExpress WinForms Data Grid组件实现识别行操作,欢迎下载最新版组件体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
在本教程中,您将了解到DevExpress WinForms网格视图标识其行的方式。
在上文中(),我们为大家介绍了纯数据中的行标识符、排序和过滤数据时行标识符之间的差异等,本文将继续介绍分组数据时行标识符之间的差异、特殊行句柄等,欢迎下载最新版组件体验~
获取DevExpress WinForms v24.2正式版下载
DevExpress技术交流群11:749942875 欢迎一起进群讨论
行句柄和数据源索引之间的差异
接下来看看分组数据时会发生什么,行句柄和数据源索引之间的关键区别之一是,组行的行句柄是负整数。显然没有用于组行的数据源索引,因为它们不存在于数据源中,因此组行中显示的值是组中第一个数据行的索引。还有一件值得注意的事情是,数据行的句柄总是非负整数。
使用行句柄遍历行
如果您想遍历网格控件内存中的所有行,可以简单地枚举从0到View的属性的行句柄。
看一下Clear Name按钮的Click事件处理程序,它正是这样做的,以便为所有当前加载的行清除Name列中的值。处理程序代码被封装到和方法调用中,以避免对视图进行多次更新。它从等于0的行句柄开始,然后枚举到属性值为止的所有整数,循环体调用 方法来清除Name列中的值。
C#
private void barButtonClearName_ItemClick(object sender, ItemClickEventArgs e) { gridView1.BeginUpdate(); int rowHandle = 0; while (rowHandle < gridView1.DataRowCount) { gridView1.SetRowCellValue(rowHandle, colName, string.Empty); rowHandle++; } gridView1.EndUpdate(); }
运行应用程序。首先过滤记录,只显示Audis,单击该按钮并查看清除的名称。现在删除过滤并通过Make对数据进行分组,您将看到Audis组中的Name列已被清除,但其他品牌仍然拥有该数据。
因此只有匹配筛选条件的行才会加载到内存中,如果现在按Clear Name 按钮,更改将影响展开或折叠组中的所有行。
行句柄和可见索引之间的差异
分组视图还揭示了行句柄和可见索引之间的重要区别。首先,可见索引仍然从0开始,并且该值随着每个可见行(无论是组行还是数据行)而增加。其次,您会注意到行句柄已经分配给加载到内存中的所有行,包括折叠组中的行,对组行的展开和折叠操作不会影响行句柄。另一方面,可视索引将在每次展开状态更改时重新计算,以考虑已变为可见或隐藏的行。
使用可见索引
为了说明可见索引的用法,实现一个导航到视图中下一个可见行的按钮——这是按下DOWN键的替代方法。处理程序首先使用 方法确定焦点行的可见索引,该方法将行句柄作为参数。接下来代码增加获得的可见索引,最后使用 方法将其转换回行句柄值,并使用这个新获得的句柄设置焦点。
C#
private void barButtonNextRow_ItemClick(object sender, ItemClickEventArgs e) { int visibleIndex = gridView1.GetVisibleIndex(gridView1.FocusedRowHandle); visibleIndex++; gridView1.FocusedRowHandle = gridView1.GetVisibleRowHandle(visibleIndex); }
本教程中最后值得一提的一点是,为特殊类型的行(如New Item Row)分配预定义的行句柄值。
要查看如何使用这些预定义值,请处理事件。网格控件具有指定它们的静态字段,这还包括值,如果无法获得行句柄,则由某些方法返回该值。在代码中,检查当前行是否为New Item Row,如果是,则显示确认消息框。
C#
private void gridView1_BeforeLeaveRow(object sender, DevExpress.XtraGrid.Views.Base.RowAllowEventArgs e) { if (e.RowHandle == DevExpress.XtraGrid.GridControl.NewItemRowHandle) { DialogResult result = MessageBox.Show("Are you done editing the new record?", "Confirmation", MessageBoxButtons.YesNo); e.Allow = (result == System.Windows.Forms.DialogResult.Yes); } }
运行应用程序,聚焦新建项目行,然后尝试将焦点更改回其中一个数据行。如果单击“No”,焦点将保持不变。
网格视图提供了允许您将行标识符相互转换的方法,要了解其工作原理,请分析在此应用程序中显示行索引信息的处理程序。
有三列,一列显示可见索引,另一行显示句柄,第三列显示数据源索引,该代码首先使用作为参数传递的行句柄获取数据源索引。然后使用行句柄确定可见索引,之后所有的值都显示在相应的列中。
C#
using DevExpress.XtraGrid.Views.Grid; //... private void GridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { GridView view = sender as GridView; int dataSourceRowIndex = view.GetDataSourceRowIndex(e.RowHandle); int visibleIndex = view.GetVisibleIndex(e.RowHandle); if(e.Column.FieldName == "gridColumnRowHandle") e.DisplayText = e.RowHandle.ToString(); if(e.Column.FieldName == "gridColumnVisibleIndex") e.DisplayText = visibleIndex.ToString(); if(e.Column.FieldName == "gridColumnListSourceIndex") e.DisplayText = dataSourceRowIndex.ToString(); }
更多产品资讯及授权,欢迎来电咨询:023-68661681
慧都科技是专注软件工程、智能制造、石油工程三大行业的数字化解决方案服务商。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
文章转载自:慧都网本教程演示DevExpress WinForms的Banded Grid View 是如何进行用户自定义的,欢迎下载最新版组件体验!
可视化项目时间线对于有效规划和跟踪至关重要。在本篇教程中,您将学习如何使用 C# 在 Excel 中创建组合图,只需几行代码,即可自动生成动态、美观的组合图。
本文将为大家介绍DevExpress XAF将.NET Aspire集成到Blazor项目中后如何实现数据库依赖,欢迎下载最新版组件体验!
FP3 文件是使用流行的报表生成工具FastReport创建的报表。这种格式广泛用于存储可立即查看的报表数据,这些数据可以轻松共享或保存以供日后分析。但是,要打开和查看此类文件,需要一个特殊的程序——FastReport Viewer。
优秀的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress WinForms Subscription为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@dpuzeg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢