DevExpress XtraGrid SaveGridLayout - PullRequest
       3

DevExpress XtraGrid SaveGridLayout

1 голос
/ 15 августа 2011

Возникают проблемы с расширением расширенных групп при переназначении источника данных 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.

Но этот подход не работает.Расширенные группы закрываются.Что я делаю неправильно, для кого-то очевидно?

Спасибо

1 Ответ

1 голос
/ 15 августа 2011

Если я не ошибаюсь, XtraGrid не сохраняет информацию о строках расширенной группы.Используйте подход из Как сохранить статью состояния XtraGrid в качестве обходного пути к этому ограничению.

...