Я использую сетки DevExpress, есть способ сохранить макет, но у меня есть дополнительный вопрос: возможно ли обновить уже сохраненный макет, не перезаписывая его, а только обновляя, например, столбцы, которые были изменены?
DevExpress XtraGrid — как обновить макет сетки
Ответы (3)
Я не могу понять, какова цель обновления сохраненного макета.
Однако, когда вы вызываете savelayout после изменения столбцов, он полностью записывает текущую информацию, связанную с макетом (состояние отображения столбцов, порядок просмотра столбцов, информацию о сортировке и т. д.), в реестр/поток/XML и не дает возможности просто обновить существующую информацию о макете.
Если вы ранее применили макет из уже сохраненного файла, то перезапись того же файла (с информацией о макете) будет эквивалентна вашему требованию - обновление сохраненного макета.
Могу ли я предложить вам создать копию этого файла макета? Таким образом, вы можете обновить копию и сохранить оригинал.
Этот вопрос задан давно, но есть возможность обновить существующие файлы макетов в DevExpress. Вам нужно обработать два события: LayoutUpgrade и BeforeLoadLayout. В начале вы должны присвоить макету номер версии с помощью свойства OptionsLayout.LayoutVersion. Когда вы изменяете свой макет, скрываете некоторые столбцы, добавляете новые столбцы, добавляете новые фильтры... измените номер LayoutVersion. Когда ваше приложение запускается, DevExpress сравнивает существующий номер LayoutVersion с новым, если есть разница, срабатывает событие LayoutUpgrade.
DevExpress описывает это поведение здесь: Обновление макета
Я надеюсь, это поможет.