在重新分配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是利用形狀範圍的變量,順便說一句。
但是這種方法不起作用。擴大的小組正在關閉。我做錯了什麼對任何人都很明顯?
感謝
感謝柏拉圖的幫助。 – Tim