2011-08-15 147 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是利用形状范围的变量,顺便说一句。

但是这种方法不起作用。扩大的小组正在关闭。我做错了什么对任何人都很明显?

感谢

回答

相关问题