Вставить Subreport из файла

отредактировано 19:13 Раздел: FastReport .NET
// create the main report page
ReportPage reportPage = new ReportPage();
reportPage.Name = "Page1";
report.Pages.Add(reportPage);
// create report title band
reportPage.ReportTitle = new ReportTitleBand();
reportPage.ReportTitle.Name = "ReportTitle1";
reportPage.ReportTitle.Height = Units.Millimeters * 10;
// add subreport on it
SubreportObject subreport = new SubreportObject();
subreport.Name = "Subreport1";
subreport.Bounds = new RectangleF(0, 0, Units.Millimeters * 25, Units.Millimeters * 5);
reportPage.ReportTitle.Objects.Add(subreport);
// create subreport page
ReportPage subreportPage = new ReportPage();
subreportPage.Name = "SubreportPage1";
report.Pages.Add(subreportPage);
// connect the subreport to the subreport page
subreport.ReportPage = subreportPage;

Вот что пишет ClassReference.
А мне нужно добавить SubReport из файла.
Я так понимаю что нужно сделать что-то вроде
subreportPage.Open("C:\XX.frx")
но что-то пока ничего подобного не нашел.
Подскажите?

Комментарии

  • отредактировано 19:13
    Надо прочитать файл в отдельный объект Report, потом его страницу добавить в основной отчет. Что-то типа этого:
      Report report1 = new Report();
      report1.Load(...);
      ReportPage subreportPage = report1.Pages[0] as ReportPage;
      report.Pages.Add(subreportPage);
    
  • отредактировано 19:13
    AlexTZ написал: »
    Надо прочитать файл в отдельный объект Report, потом его страницу добавить в основной отчет. Что-то типа этого:
      Report report1 = new Report();
      report1.Load(...);
      ReportPage subreportPage = report1.Pages[0] as ReportPage;
      report.Pages.Add(subreportPage);
    
                           
                SubreportObject srRpTitle = new SubreportObject();
                srRpTitle.Name = "srTitle";
                srRpTitle.Bounds = new RectangleF(0, 0, Units.Millimeters * 25, Units.Millimeters * 5);
                ReportPage PageSubRepTitle = new ReportPage();
                PageSubRepTitle.Name = "srTitlePage";            
                page1.ReportTitle.Objects.Add(srRpTitle);
                Report tmpRep = new Report();
                tmpRep.LoadFromString(ReportString);                        
                PageSubRepTitle = tmpRep.Pages[0] as ReportPage;
                Report.Pages.Add(PageSubRepTitle);
                srRpTitle.ReportPage = PageSubRepTitle;
                Report.Design();
    
    первый раз дизайн показывает вроде все правильно.
    Но стОит сделать Save() и выйти из приложения, как в сохраненном отчете пропадает страница SubReport'а. На главной странице остается "голый" объект SubReportObject, ни к чему не "привязанный"
  • отредактировано 19:13
    Вот такой код у меня работает правильно. Единственный момент - при чтении из второго отчета учтите, что могут возникать конфликты имен. В частности, имя самой страницы может совпадать с именем страницы основного отчета:
          Report report = new Report();
          // create the main report page
          ReportPage reportPage = new ReportPage();
          reportPage.Name = "Page1";
          report.Pages.Add(reportPage);
          // create report title band
          reportPage.ReportTitle = new ReportTitleBand();
          reportPage.ReportTitle.Name = "ReportTitle1";
          reportPage.ReportTitle.Height = Units.Millimeters * 10;
          // add subreport on it
          SubreportObject subreport = new SubreportObject();
          subreport.Name = "Subreport1";
          subreport.Bounds = new RectangleF(0, 0, Units.Millimeters * 25, Units.Millimeters * 5);
          reportPage.ReportTitle.Objects.Add(subreport);
    
          Report report1 = new Report();
          report1.Load(...);
          ReportPage subreportPage = report1.Pages[0] as ReportPage;
          subreportPage.Name = "Page2";
          report.Pages.Add(subreportPage);
    
          // connect the subreport to the subreport page
          subreport.ReportPage = subreportPage;
    
          report.Design();
    
  • отредактировано 19:13
    Спасибо
    работает
    проблема действительно была в конфликте имен.
    Но глубже.
    У Page.ReportTitle.Name, PageFooter.Name etc.
    разобрался

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

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