2011-08-15 21 views
1

XtraGridのデータソースが再割り当てされたときに展開されたグループ化を維持するのに問題があります。DevExpress XtraGrid SaveGridLayout

背景

フォーム左右の垂直グリッド上XtraGridを有しています。 XtraGridはフォームのコントローラです。

ユーザーが列(顧客など)をグループヘッダーにドラッグします。その後、複数の顧客を展開して、注文ヘッダーの詳細を表示します。

- オーダーの1つをクリックすると、データベースからオーダーの詳細がフェッチされ、フォームの右側に垂直グリッドが表示されます。ここでユーザーは編集を行い、次に保存することができます。変更。

OR

- ユーザーが完了し、保存することができます空白の垂直グリッドを表示する、メニューの[新規追加]をクリックします。

更新または挿入後、ページの左側にある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はBTW、フォームスコープを持つ変数です。

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

おかげ

答えて

1

私は間違っていないよ場合は、XtraGridは展開グループ行についての情報を保存しません。この制限の回避策として、How to preserve the XtraGrid View stateの記事のアプローチを使用してください。

+0

ありがとう、プラトン、助けを求める。 – Tim

関連する問題