踩坑日记 - DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号
场景重现
开发环境: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);
}
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网