XtraGridのデータソースが再割り当てされたときに、拡張されたグループを拡張したままにするのに問題があります。
バックグラウンド
フォームの左側にはXtraGridがあり、右側には垂直グリッドがあります。XtraGridは、フォームのコントローラーです。
ユーザーが列(顧客など)をグループヘッダーにドラッグします。次に、複数の顧客を展開して、注文ヘッダーの詳細を表示します。次に、ユーザーは次のいずれかを行います。
-注文の1つをクリックします。これにより、データベースから注文の詳細が取得され、フォームの右側にある垂直グリッドにデータが入力されます。ここで、ユーザーは編集を行ってから変更を保存できます。
また
-空白の垂直グリッドを表示するメニューで[新規追加]をクリックします。これは、ユーザーが入力して保存できます。
更新または挿入後、ページの左側にあるXtraGridに入力されているデータソースが完全に更新されます。データベースに対して別のクエリが発行され、グリッドのデータソースプロパティに割り当てられているDataTableが返されます。次に、フォーカスが更新された行または新しく挿入された行に設定されます。
DevExpress.XtraGrid.Views.Base.ColumnView vw;
vw = MyXtraGrid.DefaultView as DevExpress.XtraGrid.Views.Base.ColumnView;
// <snip> routine to determine the row
vw.FocusedRowHandle = i
でも.....
ユーザーの拡大した顧客をすべて拡大したままにしておきたい。したがって、保存または挿入の前に、SaveGridLayoutメソッドを呼び出します。
private void SaveGridLayout()
{
(ControllerList as DevExpress.XtraGrid.GridControl).MainView.SaveLayoutToStream(GridLayoutStream);
}
そして、更新または挿入後にグリッドのデータソースが再割り当てされ、フォーカスされた行がリセットされた後、RestoreGridLayoutメソッドを呼び出します。
private void RestoreGridLayout()
{
( ControllerList as DevExpress.XtraGrid.GridControl).MainView.RestoreLayoutFromStream(GridLayoutStream);
}
GridLayoutStreamは、form-scope、BTWを持つ変数です。
しかし、このアプローチは機能していません。拡大されたグループは閉鎖されつつあります。私が間違っていることは誰にも明らかですか?
ありがとう