1

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を持つ変数です。

しかし、このアプローチは機能していません。拡大されたグループは閉鎖されつつあります。私が間違っていることは誰にも明らかですか?

ありがとう

4

1 に答える 1

1

私が間違っていなければ、XtraGrid は展開されたグループ行に関する情報を保持しません。この制限の回避策として、XtraGrid ビューの状態を保持する方法の記事のアプローチを使用してください。

于 2011-08-15T16:08:55.487 に答える