DevExpress XtraGrid:从Object获取RowHandle的正确方法是什么

时间:2012-07-05 19:57:40

标签: c# winforms devexpress

我在DevExpress XtraGrid (WinForms)中列出了一组日期范围(每个日期范围由 Period 对象表示)。

在将Period分为两个(用户输入分割日期)的方法中,代码执行此操作:

  1. 在焦点行上获得Period参考。 ((期间)GridViewPeriods.GetRow(selectedRows [0]))
  2. 克隆选定的时间段。
  3. 获得新克隆时段的参考。
  4. 工作完成后,我想把重点放在新克隆的时段上。此时,我只有两个Period引用。

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

    我最后编写了这个辅助方法:

        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;
        }
    

    然后我将焦点设置在新创建的Period上,如下所示:

    GridViewPeriods.FocusedRowHandle = GetDataRowIndex(tailingPeriod);
    

    有更短或更聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

看起来你这样做是最好的方式,虽然看起来你必须经历一堆东西才能​​得到你想要的东西Dev Express拥有与你一样的解决方案

http://www.devexpress.com/Support/Center/p/A1488.aspx

我想也许rowindex可能与数据源的顺序有关,但似乎没有任何整理

http://www.devexpress.com/Support/Center/p/A1488.aspx

如果您在单个单元格中显示任何类型的唯一标识信息,则可以使用LocateByValue如果您没有显示唯一标识信息,则可以始终隐藏该列