DevExpress XtraGrid (WinForms)に日付範囲のコレクション (各日付範囲はPeriodオブジェクトで表されます) をリストしています。
期間を 2 つに分割するメソッド (分割日はユーザーが入力します) では、コードは次のようになります。
- フォーカスされた行の期間参照を取得します。((期間)GridViewPeriods.GetRow(selectedRows[0]);)
- 選択した期間を複製します。
- 新しく複製された期間の参照を取得します。
仕事が終わったら、新しく複製された期間に焦点を当てたいと思います。この時点で、ピリオドのリファレンスは 2 つしかありません。
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;
}
次に、次のように新しく作成された期間にフォーカスを設定します。
GridViewPeriods.FocusedRowHandle = GetDataRowIndex(tailingPeriod);
それを行うためのより短いまたはよりスマートな方法はありますか?