Webreport. Показ готового отчета

отредактировано 07:47 Раздел: FastReport .NET
Отчеты готовятся на сервере, потом через сервисы передаются на web-сервер. У web-сервера уже нет доступа к базе - надо передавать готовый отчет. Как это можно реализовать?

Когда присваиваю готовый отчет в WebReport1.Report - показывается пустая страница. Хотя если рядом же сохраняю его на диск - то winforms viewer показывает его нормально.

Вот пример кода:
 protected void WebReport1_StartReport(object sender, EventArgs e)
    {
        // Загрузили отчет, задали подключение к базе, сохранили в MemoryStream 
        FastReport.Report rpt = new FastReport.Report();
        rpt.Load(@"D:\test.frx");
        rpt.SetParameterValue("ConnectionString", "строка подключения");
        rpt.Prepare();
        MemoryStream ms = new MemoryStream();
        rpt.SavePrepared(ms);

        // Подгрузили отчет из MemoryStream, отдали его WebReport1
        FastReport.Report rptCopy = new FastReport.Report();
        MemoryStream ms2 = new MemoryStream(ms.ToArray());
        rptCopy.LoadPrepared(ms2);
        rptCopy.SavePrepared(@"D:/Newtest.fpx");
        WebReport1.Report = rptCopy;
    }

Комментарии

  • отредактировано 07:47
    Здравствуйте,

    Нет никакой возможности заставить WebReport показать уже готовый отчет. После события StartReport происходит построение отчета, что затирает готовый отчет пустым.
  • отредактировано 07:47
    А планируется ли подобный функционал в будущих версиях?

    И почему нормально работает такой код
    FastReport.Report rpt = new FastReport.Report();
    rpt.Load(@D:\test.frx);
    rpt.Prepare();
    WebReport1.Report = rpt;

    Причем обращение к базе идет только на методе rpt.Prepare();

    Если не передавать сам отчет - то можно было бы из отчета доставать данные и только их передавать. Но TableDataSource не сериализуемый.

    Есть ли какие-то еще методы, чтобы получить TableDataSource из отчета помимо GetDataSource, так как этот метод требует знания alias источника данных?
  • отредактировано 07:47
    Я поправлю код в следующем билде, чтобы можно было делать так:
    protected void WebReport1_StartReport(object sender, EventArgs e)
    {
      ...
      WebReport1.Report = rptCopy;
      WebReport1.ReportDone = true;
    }
    

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.