Возникают проблемы с расширением расширенных групп при переназначении источника данных XtraGrid.
ФОН
Форма имеет XtraGrid слева и вертикальную сетку справа.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 - это переменная с областью видимости, BTW.
Но этот подход не работает.Расширенные группы закрываются.Что я делаю неправильно, для кого-то очевидно?
Спасибо