在重新分配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是利用形状范围的变量,顺便说一句。
但是这种方法不起作用。扩大的小组正在关闭。我做错了什么对任何人都很明显?
感谢
感谢柏拉图的帮助。 – Tim