Как я могу сериализировать дизайн отчета о DevExpress XtraReport

Я думал бы, что это зависит от того, какие платформы Вы планируете на предназначении. Java будет иметь большинство платформ с VM. Однако, если Вы просто хотите использовать Windows и Linux, можно использовать C# (использующий моно на Linux).

8
задан Patrick Hofman 9 October 2014 в 15:25
поделиться

3 ответа

Вот упрощенная версия того, как я это делаю:

XtraReport customReport;
customReport = new MyXtraReport();
byte[] layout = LoadCustomLayoutFromDB();
if (layout != null) {
    using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(layout)) {
        customReport.LoadLayout(memoryStream);
    }
}

using (XRDesignFormEx designer = new XRDesignFormEx()) {
    MySaveCommandHandler customCommands = new MySaveCommandHandler(designer.DesignPanel);
    designer.DesignPanel.AddCommandHandler(customCommands);
    designer.OpenReport(customReport);
    designer.ShowDialog(this);
    if (customCommands.ChangesSaved)
        SaveCustomLayoutToDB(customCommands.Layout);
}

Внутри класса MySaveCommandHandler:

public virtual void HandleCommand(ReportCommand command, object[] args, ref bool handled) {
    if (command != ReportCommand.SaveFileAs && command != ReportCommand.SaveFileAs)
        return;

    using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream()) {
        panel.Report.SaveLayout(memoryStream);
        this.layout = memoryStream.ToArray();
        changesSaved = true;
    }

    panel.ReportState = ReportState.Saved;
    handled = true;
}
9
ответ дан 5 December 2019 в 13:00
поделиться

Я думаю, что вы ищете метод SaveLayout:

Сохранение отчета

YourReport report = new YourReport();

// Save the layout to a file.
report.SaveLayout(@"C:\YourReport.repx");

Загрузка отчета

YourReport report = new YourReport();

// Load the layout
report.LoadLayout(@"C:\YourReport.repx");

Изменить:

здесь ссылка на сайт поддержки devexpress, где объясняется, как сохранить определение отчета.

3
ответ дан 5 December 2019 в 13:00
поделиться

Вы можете сохранять / загружать в поток и из потока, используя переопределения Save и LoadLayout. Для дизайнера вы можете добавить обработчик команд для перехвата команды сохранения.

Эти статьи должны охватывать все, что вам нужно:

Как: сохранить и восстановить определение отчета из потока

Как: переопределить команды в Конструктор конечных пользователей (пользовательское сохранение)

И для полноты: Список всех инструкций

Редактировать: исправленные ссылки

1
ответ дан 5 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: