当前位置: 首页 > news >正文

DevExpress WinForms中文教程:Grid View - 如何实现识别行操作?(一)

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

在本教程中,您将了解到DevExpress WinForms网格视图标识其行的方式。

  • 数据源行索引
  • 行处理
  • 可见索引

DevExpress新旧版本帮助文档获取可点击这篇文章查看——>《界面控件DevExpress v26.1帮助文档大全(CHM版本)》

概述

数据源索引是指绑定列表中的记录,您将使用它们进行数据编辑。每个数据行都有一个惟一的索引,而组行只引用第一个可用的数据行,而服务行返回负值。

网格视图使用行句柄来标识任何类型的行,组行有连续的负索引,服务行有预定义值,数据行有正索引。

最后,可见索引按照在屏幕上显示的顺序枚举所有行,这些标识符主要用于实现行导航。

现在仔细看看何时使用每种类型的行标识符以及它们之间的区别。

纯数据中的行标识符

如果网格显示的是普通数据,那么这三个标识符在每行中通常是相同的,它们都是以0开头的行下标。

排序和过滤数据时行标识符之间的差异

数据排序

排序数据是查看这些标识符之间区别的一种方法,记录的顺序改变了,数据源索引也随之改变。相同的行由相同的数据源索引标识,但顺序现在不同了。另一方面,行句柄和可见索引仍然是从0开始的连续整数,并且它们在每行中相互匹配。

过滤数据

当您筛选行时,也会达到类似的效果。数据被重新加载,行结构被重新构建,可见索引和行句柄被更新以反映新的结构,而数据源索引跟随它们对应的行。

错误使用行句柄

重要的一点是,行句柄和可见索引会随着用户操作的变化而变化,创建一个简单的示例来说明这一点。DevExpress WinForms Ribbon控件中的Save Index按钮将保存当前聚焦行的句柄,为此声明一个整数savedRowHandle字段,并将网格视图的ColumnView.FocusedRowHandle属性值分配给它。

C#

int savedRowIndex; private void barButtonSaveIndex_ItemClick(object sender, ItemClickEventArgs e) { savedRowIndex = gridView1.FocusedRowHandle; }

还有一个Change Value按钮,它的Click事件处理程序使用ColumnView.SetRowCellValue方法将Name列单元格设置为保存行中的空字符串。

C#

private void barButtonChangeValue_ItemClick(object sender, ItemClickEventArgs e) { gridView1.SetRowCellValue(savedRowIndex, colName, string.Empty); }

运行应用程序并首先使用Audi A6聚焦行,单击Save Index按钮,然后将焦点移开,最后单击Change Value按钮。正如预期的那样,已保存行中的单元格已被更改。

重新启动应用程序,现在首先对Name列排序,然后找到显示Audi A6的行。保存行句柄,现在是2 - 使用Save Index按钮,然后清除排序并注意行句柄是如何更改的。因此,如果您按下Change Value,保存的Audi A6行将不会更改。

使用数据源索引代替行句柄

要解决这个问题,需要修改代码,使其存储数据源索引而不是行句柄。然后,在Change Value处理程序中,将存储的索引转换为行句柄,然后才应用更改。

C#

int savedRowIndex; private void barButtonSaveIndex_ItemClick(object sender, ItemClickEventArgs e) { savedRowIndex = gridView1.GetDataSourceRowIndex(gridView1.FocusedRowHandle); } private void barButtonChangeValue_ItemClick(object sender, ItemClickEventArgs e) { int rowHandle = gridView1.GetRowHandle(savedRowIndex); gridView1.SetRowCellValue(rowHandle, colName, string.Empty); }

运行应用程序,看看代码现在是否按预期工作,即使在使用排序或过滤等数据整形操作时也是如此。

未完待续,我们下期见......

http://www.jsqmd.com/news/1120801/

相关文章:

  • Faster-Whisper终极指南:4倍速本地语音识别技术深度解析
  • Umi-OCR Windows 7环境部署与性能调优技术指南
  • GPT-6寂寞感背后:大模型落地的四重错位与务实破局路径
  • 双向全桥LLC谐振变换器在新能源并网中的应用
  • 从零到专业:3步掌握Lean量化交易引擎,打造你的智能交易系统
  • 终极指南:如何彻底解决OSX-KVM虚拟机的音频延迟问题
  • 近期AI量化学习,按四个阶段检查风险
  • 3个关键突破:Mermaid Live Editor如何用代码思维重构技术图表创作流程
  • Dify实战指南:从零部署到构建AI工作流与RAG应用
  • 如何使用Git
  • 界面控件Kendo UI for Vue 2024 Q4亮点 - 增强图表的数据模板、导航功能
  • 终极Kitty终端配置指南:10倍效率提升的macOS专属优化方案
  • 炉石传说终极模改插件:HsMod让你的游戏体验提升300%的完整指南
  • HPL1Engine场景管理指南:高效加载与渲染3D世界的10个技巧
  • ComfyUI-WanVideoWrapper:如何在有限硬件下实现专业级AI视频生成
  • OpenCV 4.8 图像处理实战:用代码生成与量化分析 3 种经典视觉错觉
  • Grafonnet-lib与Grizzly结合:简化Grafana仪表盘管理流程的终极指南
  • 界面控件Telerik UI for Blazor 2024 Q4新版亮点 - 轻松实现日程自定义
  • Umi-OCR 在Windows 7环境下的完整部署与优化指南
  • Qwen3.6-Plus vs Opus实战对比:稳准省心才是生产级大模型的核心指标
  • PWC-Net深度剖析:从特征金字塔到光流回归的架构演进
  • 炉石传说游戏增强插件:HsMod 55个功能完整配置指南
  • InChat核心组件详解:从Channel到Handler,Netty通信管道的构建与扩展
  • 基于GLM-4.7-Flash与OpenClaw的意图驱动UI自动化测试实践
  • MySQL:SQL优化实际案例解析(持续更新)
  • Play Integrity Fix:三分钟解决Android设备认证失败的终极方案
  • Docker使用指南
  • 终极Kali Linux工具包:57个信息收集工具一键部署指南
  • F_Record完整指南:3步实现绘画过程自动录制的高效方案
  • StatefulLayout:打造Android应用终极状态管理方案,一行代码搞定加载/空数据/错误界面