DevExpress XtraGrid SaveGridLayout

DevExpress XtraGrid SaveGridLayout,devexpress,xtragrid,Devexpress,Xtragrid,在重新分配XtraGrid的数据源时,无法保持扩展分组的扩展 背景 表单的左侧是XtraGrid,右侧是垂直网格。XtraGrid是表单的控制器 用户将列(例如Customer)拖至组标题。然后展开几个客户,查看他们的订单标题详细信息。然后,用户可以: --单击其中一个订单,从数据库获取订单详细信息,并填充表单右侧的垂直网格,用户可以在其中进行编辑,然后保存更改 或 --单击菜单上的Add New(添加新),该菜单显示一个空白的垂直网格,用户可以完成并保存该网格 在更新或插入之后,填充页面左侧X

在重新分配XtraGrid的数据源时,无法保持扩展分组的扩展

背景

表单的左侧是XtraGrid,右侧是垂直网格。XtraGrid是表单的控制器

用户将列(例如Customer)拖至组标题。然后展开几个客户,查看他们的订单标题详细信息。然后,用户可以:

--单击其中一个订单,从数据库获取订单详细信息,并填充表单右侧的垂直网格,用户可以在其中进行编辑,然后保存更改

--单击菜单上的Add New(添加新),该菜单显示一个空白的垂直网格,用户可以完成并保存该网格

在更新或插入之后,填充页面左侧XtraGrid的数据源被完全更新——对数据库发出另一个查询,该查询返回一个分配给网格数据源属性的数据表;然后将焦点设置为更新的行或新插入的行:

  DevExpress.XtraGrid.Views.Base.ColumnView  vw;
  vw = MyXtraGrid.DefaultView as DevExpress.XtraGrid.Views.Base.ColumnView;
  // <snip> routine to determine the row
  vw.FocusedRowHandle = i
并且,在更新或插入后重新分配网格的数据源,并重置聚焦行之后,我调用RestoreGridLayout方法:

 private void SaveGridLayout()
  {
  (ControllerList as DevExpress.XtraGrid.GridControl).MainView.SaveLayoutToStream(GridLayoutStream);    
  }
 private void RestoreGridLayout() 
 {
 ( ControllerList as DevExpress.XtraGrid.GridControl).MainView.RestoreLayoutFromStream(GridLayoutStream);
 }
GridLayoutStream是一个具有表单范围的变量,顺便说一句

但这种方法不起作用。扩大后的团体正在关闭。我做错了什么对任何人来说都是显而易见的吗


谢谢

如果我没有弄错的话,XtraGrid不会保留关于扩展组行的信息。使用本文中的方法解决此限制。

如果我没有弄错的话,XtraGrid不会保留有关扩展组行的信息。使用本文中的方法解决此限制。

感谢柏拉图的帮助。感谢柏拉图的帮助。