2011-08-15 59 views
1

在重新分配XtraGrid的數據源時,難以保持擴展分組的展開。DevExpress XtraGrid SaveGridLayout

背景

形式有XtraGrid中左和垂直網格右側。 XtraGrid是表單的控制器。

用戶拖動一列(例如客戶)到組頭。然後擴展幾個客戶看到他們的訂單頭細節。然後,用戶可以:

- 點擊其中一個訂單,從數據庫獲取訂單詳細信息,並在窗體的右側填充垂直網格,用戶可以在其中進行編輯,然後保存變化。

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是利用形狀範圍的變量,順便說一句。

但是這種方法不起作用。擴大的小組正在關閉。我做錯了什麼對任何人都很明顯?

感謝

回答

相關問題