C# DevExpress XtraGrid:从对象获取行句柄的正确方法是什么

C# DevExpress XtraGrid:从对象获取行句柄的正确方法是什么,c#,winforms,devexpress,C#,Winforms,Devexpress,我在DevExpressXtraGrid(WinForms)中列出了一组日期范围(每个日期范围由一个句点对象表示) 在将时段一分为二(分割日期由用户输入)的方法中,代码执行以下操作: 获取聚焦行上的期间引用。((Period)GridViewPeriods.GetRow(selectedRows[0]);) 克隆所选时段 获取新克隆期间的引用 工作完成后,我想把重点放在新克隆的时期。在这一点上,我只有我的两个周期参考 我在XtraGrid中没有找到任何方法可以根据行的值来定位行(比如通过传递对象

我在DevExpressXtraGrid(WinForms)中列出了一组日期范围(每个日期范围由一个句点对象表示)

在将时段一分为二(分割日期由用户输入)的方法中,代码执行以下操作:

  • 获取聚焦行上的期间引用。((Period)GridViewPeriods.GetRow(selectedRows[0]);)
  • 克隆所选时段
  • 获取新克隆期间的引用
  • 工作完成后,我想把重点放在新克隆的时期。在这一点上,我只有我的两个周期参考

    我在XtraGrid中没有找到任何方法可以根据行的值来定位行(比如通过传递对象返回行句柄)

    我最终编写了以下帮助器方法:

        public int GetDataRowIndex(RatePeriod period)
        {
            int foundIndex = 0;
    
            for (int i = 0; i < GridViewRatePeriods.DataRowCount; i++)
            {
                if ((RatePeriod)GridViewRatePeriods.GetRow(i) == period)
                {
                    foundIndex = i;
                    break;
                }
            }
            return foundIndex;
        }
    

    有没有更短或更聪明的方法可以做到这一点?

    看起来你是在用最好的方法做这件事,尽管看起来你需要经历一系列的事情才能得到你想要的东西Dev Express拥有与你相同的解决方案

    我认为行索引可能与数据源的顺序相关,但似乎没有任何排序规则


    如果您在单个单元格中显示任何类型的唯一标识信息,如果您没有显示唯一标识信息,您可以随时隐藏该列

    您的数据中没有显示在网格中的唯一标识符,是吗?如果您添加了具有唯一标识信息的列,会怎么样识别信息并使用LocateByValue(参见我编辑的答案),谢谢您的建议。我也想避免那样做。我不喜欢为了能够检索特定的行而必须在UI中放入此类数据。对我来说似乎是“黑客”。我们可以看看一些关于如何添加克隆行的代码吗?AddNewRow应将焦点设置为新记录。请查看此DX文档,感谢您的输入。引用的帖子很旧,但是,正如我最近看到的,我认为没有更好的方法来完成它。@SteveHémond您是否显示任何独特的识别信息?你可以用不,我不是。我写这篇文章的原因也是因为我想避免做隐藏列值调整的事情。
    GridViewPeriods.FocusedRowHandle = GetDataRowIndex(tailingPeriod);