Usuário com melhor resposta
ReportViewer - Subreport dentro de Subreport

Pergunta
-
Olá,
Existe a possibilidade de gerar um subreport dentro de um outro subreport?
No codebehind, não vejo meios de manipulação do subreport (nível 2). Somente consigo acessar os subreports no nível 1, ou seja, que estejam dentro do report principal. Agora como fazer para ter acesso aos subreports do nível 2, e assim por diante? É possível? O Report principal gera certinho assim como o seu subreport, porém o subreport de nível 2 dá erro (que está dentro do primeiro subreport).
Entenda como nível 2, um subreport dentro de outro subreport.
Agradeço desde já.
Respostas
-
Olá Jorge,
Tenta aplicar o código de exemplo abaixo:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("pt-BR"); rpvRelatorio.LocalReport.ReportPath = "Relatorios\\Fontes\\Relatorio.rdlc"; rpvRelatorio.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsPrincipal", minhasListaComDados)); rpvRelatorio.LocalReport.SubreportProcessing += new Microsoft.Reporting.WebForms.SubreportProcessingEventHandler(LocalReport_SubreportProcessing); } } void LocalReport_SubreportProcessing(object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e) { int IdRelaorioPai = e.Parameters["ID"].Values.First().ToString().ToInt(); int IdRelatorioPaiSub =0; string nomeDataSourceAtual = e.DataSourceNames[0]; if (nomeDataSourceAtual == "dsSubRelatorio") { IdRelatorioPaiSub= e.Parameters["ID"].Values.First().ToString().ToInt(); e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsSubRelatorio", this.ObterSubRelatorio(IdRelatorioPai))); return; } if (nomeDataSourceAtual == "dsSubSubRelatorio") { e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsSubSubRelatorio", this.ObterSubSubRelatorio(IdRelatorioPaiSub))); return; } }
- Editado José Carlos Barbosa quinta-feira, 13 de novembro de 2014 17:47
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 11 de maio de 2018 15:39
-
Já consegui. É póssivel sim.
Obrigado
- Marcado como Resposta Marcos_Marques sexta-feira, 26 de abril de 2013 12:12
Todas as Respostas
-
Já consegui. É póssivel sim.
Obrigado
- Marcado como Resposta Marcos_Marques sexta-feira, 26 de abril de 2013 12:12
-
-
Olá Jorge,
Tenta aplicar o código de exemplo abaixo:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("pt-BR"); rpvRelatorio.LocalReport.ReportPath = "Relatorios\\Fontes\\Relatorio.rdlc"; rpvRelatorio.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsPrincipal", minhasListaComDados)); rpvRelatorio.LocalReport.SubreportProcessing += new Microsoft.Reporting.WebForms.SubreportProcessingEventHandler(LocalReport_SubreportProcessing); } } void LocalReport_SubreportProcessing(object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e) { int IdRelaorioPai = e.Parameters["ID"].Values.First().ToString().ToInt(); int IdRelatorioPaiSub =0; string nomeDataSourceAtual = e.DataSourceNames[0]; if (nomeDataSourceAtual == "dsSubRelatorio") { IdRelatorioPaiSub= e.Parameters["ID"].Values.First().ToString().ToInt(); e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsSubRelatorio", this.ObterSubRelatorio(IdRelatorioPai))); return; } if (nomeDataSourceAtual == "dsSubSubRelatorio") { e.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("dsSubSubRelatorio", this.ObterSubSubRelatorio(IdRelatorioPaiSub))); return; } }
- Editado José Carlos Barbosa quinta-feira, 13 de novembro de 2014 17:47
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 11 de maio de 2018 15:39
-