【问题标题】:DevExpress XtraGrid SaveGridLayoutDevExpress XtraGrid SaveGridLayout
【发布时间】:2011-08-15 15:35:01
【问题描述】:

重新分配 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

但是......

我想扩大用户的所有扩展客户。因此,在 Save 或 Insert 之前,我调用了 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 是一个带有表单范围的变量,顺便说一句。

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

谢谢

【问题讨论】:

    标签: devexpress xtragrid


    【解决方案1】:

    如果我没记错的话,XtraGrid 不会保留有关扩展组行的信息。使用How to preserve the XtraGrid View state 文章中的方法来解决此限制。

    【讨论】:

    • 谢谢您的帮助。
    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多