【发布时间】:2012-07-05 19:57:39
【问题描述】:
我在 DevExpress XtraGrid (WinForms) 中列出日期范围的集合(每个日期范围由 Period 对象表示)。
在将 Period 一分为二的方法中(分割日期由用户输入),代码执行以下操作:
- 获取焦点行的周期引用。 ((Period)GridViewPeriods.GetRow(selectedRows[0]);)
- 克隆选定的时间段。
- 获取有关新克隆的 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);
有没有更短或更聪明的方法来做到这一点?
【问题讨论】:
-
您的数据中没有显示在网格中的唯一标识符吗?
-
如果您添加了一个具有唯一标识信息并使用 LocateByValue 的列,该怎么办(请参阅我编辑的答案)
-
感谢您的建议。我也想避免这样做。我不喜欢为了能够检索特定行而将这种数据放在 UI 中。对我来说似乎是“黑客行为”。
-
我们能看到一些关于如何添加克隆行的代码吗? AddNewRow 应该将焦点设置到新记录。
标签: c# winforms devexpress