踩坑日记 | DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号|C/S开发框架

场景重现
开发环境:VS2022+DevExpress v22.2.3
.NET版本:.NET7
表格中一个列分组后,勾选了3条记录,调用 GridView.GetSelectedRows方法会返回 4 个 RowHandle(4条记录),其中一条记录的RowHandle值=-4,下图蓝色圈:

解决方案
扩展一个新方法:
C# 全选
/// <summary>
/// 获取勾选的行有效行号(RowHandle>=0),行号去重。
/// </summary>
/// <param name="gv"></param>
/// <returns></returns>
public static int[] GetSelectedRowHandles(this GridView gv)
{
var rows = gv.GetSelectedRows();
return rows.Where(w => w >= 0).Distinct().ToArray();
}使用:

C# 全选
/// <summary>
/// 关闭窗体返回当前选择的记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOk_Click(object sender, EventArgs e)
{
if (gvDetail.RowCount == 0) return;
try
{
var rows = gvDetail.GetSelectedRowHandles();
if (rows.Length == 0)
{
Msg.Warning("请勾选记录,然后【确认】");
gvDetail.Focus();
gvDetail.FocusedColumn = gvDetail.VisibleColumns[0];
return;
}
foreach (var v in rows)
{
_Result.Add(gvDetail.GetObject<res_PFSummary>(v));
}
this.Close();
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}
参考文档:
踩坑日记 | DevExpress GridControl设置DataSource数据源无效|C/S开发框架
DevExpress常用组件操作扩展类:DevExpressExtensions.cs|C/S开发框架
C# DevExpress高级篇 | GridLookUpEdit组件使用|C/S开发框架
使用DeepSeek生成DevExpress表格、窗体、C#模型代码并集成到开发框架|C/S开发框架
详解DevExpress.LookUpEdit控件实现自动搜索定位功能|C/S开发框架
DevExpress LookupEdit按回车键自动确认选择数据|C/S开发框架
DevExpress GridControl显示主从表数据(Master/Detail)|C/S开发框架
VS2022+.NET 部署DevExpress V23.2|C/S开发框架
DevExpress组件版本下载、安装与VS开发环境 | Winform C/S框架|C/S开发框架
CSFrameworkV6开发框架升级VS2022+.NET8+DevExpress24.1操作步骤|C/S开发框架
C/S结构快速开发框架使用的DevExpress常用组件|C/S开发框架
DevExpress XtraReport 开发指南|单表报表设计详解(C#)|C/S开发框架
VS2022解决方案部署DevExpress组件(DevExpress Project Settings)|C/S开发框架
C# DevExpress教学 GridLookUpEdit组件表格下拉组件使用|C/S开发框架
喜鹊ERP | DevExpress 表格常用操作指南|表格组件自动分组|C/S开发框架
DevExpress 通过小三角图标变更控件类型|C/S开发框架
踩坑日记 | DevExpress GridControl设置DataSource数据源无效|C/S开发框架
DevExpress常用组件操作扩展类:DevExpressExtensions.cs|C/S开发框架
C# DevExpress高级篇 | GridLookUpEdit组件使用|C/S开发框架
使用DeepSeek生成DevExpress表格、窗体、C#模型代码并集成到开发框架|C/S开发框架
详解DevExpress.LookUpEdit控件实现自动搜索定位功能|C/S开发框架
DevExpress LookupEdit按回车键自动确认选择数据|C/S开发框架
DevExpress GridControl显示主从表数据(Master/Detail)|C/S开发框架
VS2022+.NET 部署DevExpress V23.2|C/S开发框架
DevExpress组件版本下载、安装与VS开发环境 | Winform C/S框架|C/S开发框架
CSFrameworkV6开发框架升级VS2022+.NET8+DevExpress24.1操作步骤|C/S开发框架
C/S结构快速开发框架使用的DevExpress常用组件|C/S开发框架
DevExpress XtraReport 开发指南|单表报表设计详解(C#)|C/S开发框架
VS2022解决方案部署DevExpress组件(DevExpress Project Settings)|C/S开发框架
C# DevExpress教学 GridLookUpEdit组件表格下拉组件使用|C/S开发框架
喜鹊ERP | DevExpress 表格常用操作指南|表格组件自动分组|C/S开发框架
DevExpress 通过小三角图标变更控件类型|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
