1

我在 DevExpress XtraGrid (WinForms)中列出日期范围的集合(每个日期范围由Period对象表示)。

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

  1. 获取焦点行上的 Period 引用。((期间)GridViewPeriods.GetRow(selectedRows[0]);)
  2. 克隆选定的时间段。
  3. 获取关于新克隆的 Period 的引用。

工作完成后,我想把重点放在新克隆的 Period 上。此时,我只有两个 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);

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

4

1 回答 1

0

看起来您正在以最好的方式做到这一点,尽管您似乎必须通过一堆东西来获得您正在寻找的东西 Dev Express 具有与您相同的解决方案

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

我想也许 rowindex 可能与您的数据源的顺序相关,但似乎没有任何排序规则

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

如果您在单个单元格中显示任何一种唯一的识别信息,您可能可以使用 LocateByValue如果您没有显示唯一的识别信息,您总是可以隐藏该列

于 2012-07-05T20:53:48.900 回答