重新分配 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是一个具有表单范围的变量,顺便说一句。
但这种方法行不通。扩大的团体正在关闭。我做错了什么对任何人都很明显吗?
谢谢