1

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

背景

Form 左侧有 XtraGrid,右侧有 Vertical Grid。XtraGrid 是表单的控制器。

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

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

或者

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

在更新或插入之后,填充页面左侧 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是一个具有表单范围的变量,顺便说一句。

但这种方法行不通。扩大的团体正在关闭。我做错了什么对任何人都很明显吗?

谢谢

4

1 回答 1

1

如果我没记错的话,XtraGrid 不会保留有关扩展组行的信息。使用如何保留 XtraGrid 视图状态文章中的方法作为解决此限制的方法。

于 2011-08-15T16:08:55.487 回答