logo
small logo
  • Products
  • Comprar
  • Suporte
  • About
  • Customer panel Suporte
    • en
    • de
    • JP
    • ZH
  • Home
  • /
  • Articles
  • /
  • Como mostrar múltiplos relatórios em uma página no Blazor
  • Relatórios e documentos PDF no Blazor

    5 de abril de 2021

    A Microsoft lançou recentemente uma plataforma web chamada Blazor. Este framework permite a criação de

    read more
  • Configuração de funções avançadas de exportação no FastReport.Web para Core e Blazor Server

    6 de dezembro de 2021

    Muitas vezes, nossos usuários precisam alterar os parâmetros de exportação do arquivo,cuja implementação consideraremos

    read more
  • FastReport .NET packages e .NET 5.0

    17 de dezembro de 2020

    UPD: aplica-se às versões do FastReport.net antes de 2022.2. Pacotes de licença já estão disponíveis

    read more
  • Working with NuGet packages in FastReport

    22 de novembro de 2021

    UPD: Applies to the versions of FastReport .NET before 2022.2. License packages are now available

    read more
  • Como criar uma fatura a partir do aplicativo ASP.Net Core

    31 de agosto de 2020

    Poucos acreditaram no sucesso da nova estrutura de código-fonte aberto ASP.Net Core da Microsoft. É

    read more

Como mostrar múltiplos relatórios em uma página no Blazor

12 de julho de 2022

É comum que nossos usuários precisem mostrar dois relatórios com dados diferentes na mesma página. Suponhamos uma situação em que você precise comparar os relatórios do primeiro e do último mês. Para resolver seu problema, temos suporte do Blazor WebReport.

Exemplo de utilização de dois relatórios em uma página no Blazor

Vamos analisar mais de perto como implementar isto em seu aplicativo Blazor. Usaremos o aplicativo de teste do artigo “Relatórios e documentos PDF no Blazor” e removeremos tudo o que não seja necessário.

Primeiro, vamos tentar simplesmente mostrar dois relatórios na mesma página. Passamos para o arquivo “Pages\Index.razor.cs”.

Depois disso, adicionamos um segundo relatório. Não se esqueça de declará-lo e registrar os dados para ele primeiro, e depois insira o seguinte código:

Report Report2 { get; set; }
 
 Report2 = Report.FromFile(reportPath);
 Report2.RegisterData(DataSet, "NorthWind");

Ótimo, agora vamos mostrar nosso relatório. Vá para o arquivo “Pages\Index.razor.cs” e insira o código necessário:

 UserWebReport2 = new WebReport
 {
 Report = Report2,
 Toolbar = toolbar2
 };

Nosso arquivo agora será algo parecido com isto:

 public partial class Index
 {
 readonly string directory;
 const string DEFAULT_REPORT = "Filter Employees.frx";
 public Report Report1 { get; set; }
 public Report Report2 { get; set; }
 public WebReport UserWebReport { get; set; }
 
 public WebReport UserWebReport2 { get; set; }
 
 DataSet DataSet { get; }
 
 
 protected override void OnParametersSet()
 {
 base.OnParametersSet();
 
 string path = 
 Path.Combine(
 directory,
 string.IsNullOrEmpty(ReportName) ? DEFAULT_REPORT : ReportName);
 
 Report1 = Report.FromFile(path);
 Report2 = Report.FromFile(path);
 
 // Registers the application dataset
 Report1.RegisterData(DataSet, "NorthWind");
 Report2.RegisterData(DataSet, "NorthWind");
 
 
 ToolbarSettings toolbarSettings1 = new ToolbarSettings()
 {
 Color = Color.Red,
 IconColor = IconColors.White,
 Position = Positions.Left,
 };
 
 ToolbarSettings toolbarSettings2 = new ToolbarSettings()
 {
 Color = Color.Black,
 IconColor = IconColors.White,
 Position = Positions.Right,
 };
 
 UserWebReport = new WebReport
 {
 Report = Report1,
 Toolbar = toolbarSettings1,
 };
 UserWebReport2 = new WebReport
 {
 Report = Report2,
 Toolbar = toolbarSettings2,
 };
 }
 
 public Index()
 {
 directory = Path.Combine(
 Directory.GetCurrentDirectory(),
 Path.Combine("..", "..", "Reports"));
 
 DataSet = new DataSet();
 DataSet.ReadXml(Path.Combine(directory, "nwind.xml"));
 }
 }

Ótimo, agora vá para o arquivo “Pages/Index.razor” e insira o segundo componente nele: 

<WebReportContainer WebReport="@UserWebReport2"/>

Você pode ver o resultado executando nosso aplicativo Blazor e abrindo qualquer relatório. Por uma questão de clareza, escolhemos um relatório com gráficos e diagramas.

Mostrando dois relatórios em Blazor

E se:
- queremos ver diversos dados nestes relatórios;
- queremos ver um relatório diferente em cada folha;
- queremos ver um relatório com os trabalhadores e seus salários por mês;
- queremos ver relatórios com dados para setembro e no segundo para outubro;
- queremos abrir rapidamente outro relatório sem fechar o primeiro.

E haverá uma resposta para todas essas situações. Isso pode ser implementado!

Usaremos FastReport.NET, onde abrimos o designer de relatórios e modificamos nosso padrão Simple List.frx. Conectamos uma nova fonte de dados, em nosso caso será XML:

Conectando uma nova fonte de dados

Depois disso, vamos editar um pouco o relatório, removendo tudo o que é desnecessário e deixando apenas os campos de que precisamos. A seguinte captura de tela mostra perfeitamente todas as mudanças no relatório. 

Edição de um relatório

Agora você precisa criar uma condição para filtrar os dados. Clique duas vezes na coluna "Dados", à esquerda. Em seguida, na aba "Filtro", escreva a condição como na captura de tela abaixo. 

Filtragem de dados no relatório

Neste ponto, podemos salvar o relatório e abrir nosso aplicativo de teste. Vamos escrever um pequeno pedaço de código no arquivo “Pages/Index.razor”:

 public EventCallback Filter1()
 {
 UserWebReport.Report.Load(Path.Combine(directory,firstReport));
 UserWebReport.Report.SetParameterValue("Month", Select1);
 return default;
 }
 public EventCallback Filter2()
 {
 UserWebReport2.Report.Load(Path.Combine(directory,secondReport));
 UserWebReport2.Report.SetParameterValue("Month", Select2);
 return default;
 }
 public EventCallback ChangeReport1(){
 
 UserWebReport.Report.Load(Path.Combine(directory,firstReport));
 return default;
 }
 
 public EventCallback ChangeReport2(){
 
 UserWebReport2.Report.Load(Path.Combine( directory, secondReport));
 return default;
 }

Agora vamos adicionar 4 listas drop-down à página de relatórios para filtrar dados e passar entre relatórios:

 <div style="display:flex;flex-direction:column;">
 <div style="display:flex;flex-direction:row;">
 <div style="display:flex;flex-direction:column;">
 <select style= "margin-left:370px;" @onclick=ChangeReport1() @bind="@firstReport">
 <option>Simple List.frx</option>
 <option>Chart.frx</option>
 <option>Filter Employees.frx</option>
 </select>
 @if (@firstReport == "Filter Employees.frx")
 {
 <select style= "margin-left:400px;" @onclick=Filter1() @bind="@Select1">
 <option>September</option>
 <option>October</option>
 <option>November</option>
 </select>
 }
 </div>
 <div style="display:flex;flex-direction:column;">
 <select style= "margin-left:614px;" @onclick=ChangeReport2() @bind="@secondReport">
 <option>Simple List.frx</option>
 <option>Chart.frx</option>
 <option>Filter Employees.frx</option>
 </select>
 @if (@secondReport == "Filter Employees.frx")
 {
 <select style= "margin-left:681px;" @onclick=Filter2() @bind="@Select2">
 <option>September</option>
 <option>October</option>
 <option>November</option>
 </select>
}
 </div>
 </div> 

O arquivo Pages/Index.razor depois de todas as mudanças, será algo parecido com isto: 

@page "/"
@using System.IO;
@using System.Data;
 
 <div style="display:flex;flex-direction:column;">
 <div style="display:flex;flex-direction:row;">
 <div style="display:flex;flex-direction:column;">
 <select style= "margin-left:370px;" @onclick=ChangeReport1() @bind="@firstReport">
 <option>Simple List.frx</option>
 <option>Chart.frx</option>
 <option>Filter Employees.frx</option>
 </select>
 @if (@firstReport == "Filter Employees.frx")
 {
 <select style= "margin-left:400px;" @onclick=Filter1() @bind="@Select1">
 <option>September</option>
 <option>October</option>
 <option>November</option>
 </select>
 }
 </div>
 <div style="display:flex;flex-direction:column;">
 <select style= "margin-left:614px;" @onclick=ChangeReport2() @bind="@secondReport">
 <option>Simple List.frx</option>
 <option>Chart.frx</option>
 <option>Filter Employees.frx</option>
 </select>
 @if (@secondReport == "Filter Employees.frx")
 {
 <select style= "margin-left:681px;" @onclick=Filter2() @bind="@Select2">
 <option>September</option>
 <option>October</option>
 <option>November</option>
 </select>
 }
 </div>
 </div> 
 <div style="display:flex;flex-direction:row;">
 <WebReportContainer WebReport="@UserWebReport"/>
 
 <WebReportContainer WebReport="@UserWebReport2"/>
 </div>
</div>

 

@code {
 
 private string dir = Path.Combine(
 Directory.GetCurrentDirectory(),
 Path.Combine("..","..", "Demos", "Reports"));
 
 [Parameter]
 public string ReportName { get; set; }
 
 [Parameter]
 public string Select1 { get; set; } = "September";
 
 [Parameter]
 public string Select2 { get; set; } = "October";
 
 [Parameter]
 public string firstReport { get; set; } = "Filter Employees.frx";
 
 [Parameter]
 public string secondReport { get; set; } = "Filter Employees.frx";
 
 public EventCallback Filter1()
 {
 UserWebReport.Report.Load(Path.Combine(directory,firstReport));
 UserWebReport.Report.SetParameterValue("Month", Select1);
 return default;
 }
 public EventCallback Filter2()
 {
 UserWebReport2.Report.Load(Path.Combine(directory,secondReport));
 UserWebReport2.Report.SetParameterValue("Month", Select2);
 return default;
 }
 public EventCallback ChangeReport1(){
 
 UserWebReport.Report.Load(Path.Combine(directory,firstReport));
 return default;
 }
 
 public EventCallback ChangeReport2(){
 
 UserWebReport2.Report.Load(Path.Combine( directory, secondReport));
 return default;
 }
 
}

Gostaríamos de fazer uma pequena diversificação do relatório. Entre no arquivo "Pages/Index.razor.cs" para colorir nossas barras de ferramentas ao trabalhar com elas ao mesmo tempo. Adicione o seguinte código: 

 ToolbarSettings toolbarSettings1 = new ToolbarSettings()
 {
 Color = Color.Red,
 IconColor = IconColors.White,
 Position = Positions.Left,
 };
 
 ToolbarSettings toolbarSettings2 = new ToolbarSettings()
 {
 Color = Color.Black,
 IconColor = IconColors.White,
 Position = Positions.Right,
 };

Neste ponto, você pode executar o aplicativo de teste e ver o resultado:

Visualização de dois relatórios no aplicativo de teste Blazor


Fica bonito, mas ainda podemos melhorá-lo. O próximo passo é adicionar filtragem ao segundo relatório usando as listas drop-down na parte superior:

Filtragem de relatórios utilizando listas drop-down

Ótimo, agora vamos mudar o relatório no segundo componente: 

Visualização de dois relatórios diferentes

Desta forma, você pode não somente visualizar dois relatórios na mesma página, mas também realizar diferentes manipulações com eles. Por exemplo, tente filtrar os dados ou mesmo olhar diferentes relatórios ao mesmo tempo, como mostrado acima. Para sua conveniência, nosso WebReport permite que você personalize a barra de ferramentas para cada relatório, de acordo com suas necessidades.

Não desconsideremos que dois relatórios não são o limite e que pode haver até mesmo 10 em uma página! E sim, você pode fazer todo tipo de coisas com cada um deles sem nenhum problema.

Pode ver uma demonstração do projeto deste artigo no seguinte link: FastReport.Net Trial\Demos\Core\FastReport.Blazor.DoubleReports

about product comprar
avatar
Kirill Kornienko
.NET Development
Fast Reports Team: Kirill Kornienko - NET Development at Fast Reports
.NET FastReport Core WebReport C# Report Blazor

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Comprar
  • Download
  • Documentação
  • Depoimentos
  • Como desinstalar nossos produtos
  • FAQ
  • Tutorial Video
  • Forum
  • Support SLA
  • Articles
  • Our News
  • Informação sobre nós
  • Parceiros
  • Extended licensing
  • Contatos

© 1998-2023 by Fast Reports Inc.

  • Privacidade

Trustpilot