none
ReportViewer Subrelatorios RRS feed

  • Pergunta

  • Estou desenvolvendo um relatório que irá conter um subrelatório, desta forma os dados serão exibidos em lista, por exemplo, segue um modelo de sua estrutura. 

    -----------------------------------------------------

    Neste campo conterá uma pergunta:

    Neste campo conterá um grafico das respostas:  

    Neste campo conterá as respostas

    ----------------------------------------------------

    Desta forma com o modelo acima imagine varias listagens de diferentes perguntas e respostas.

    No web form de meu relatorio estou com o codigo:

    protected void Page_Load(object sender, EventArgs e)
            {  
                if (IsPostBack)
                {  ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Perguntas.rdlc");
                    ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DSPerguntas",                  ObjectDataSource2));  
                    ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource);
                    ReportViewer1.DataBind();
                    ReportViewer1.LocalReport.Refresh();
                }

            }

            public void SetSubDataSource(object remetente, SubreportProcessingEventArgs e)

            {     
                e.DataSources.Add(new ReportDataSource("DSRespostas", ObjectDataSource2)); 

            }

     

    OBS: Quando compila o web form ele fica num loop infinito fica apenas "Carregando". 

    Estou usando um dataset e neste dataset temos um tableadapter que se relaciona com quatro tabelas. 

    Estrutura do tableadapter: 

    Se alguém puder me ajudar usando LinqToDataset ou qualquer outro meio que funcione. Se precisarem de mais informações irei postar. 

    Já tentei Entity Framework mas por causa da stringconection do azure houve alguns problemas. 

    terça-feira, 27 de outubro de 2015 00:55

Respostas

  • Olá Vando Junior,

    tudo bem?

    Eu sei que se trata de uma situação diferente, mas acredito que uma análise da lógica usada nesta thread talvez te auxilie a encontrar uma resposta. Caso não seja isso exatamente, eu indicaria você pesquisar pelo termo "if (IsPostBack) infinite loop" ou algo do tipo, tem muitas situações parecidas postadas por aí.

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ terça-feira, 27 de outubro de 2015 11:33
    • Marcado como Resposta Vando Junior quinta-feira, 29 de outubro de 2015 00:50
    terça-feira, 27 de outubro de 2015 11:30

Todas as Respostas

  • Olá Vando Junior,

    tudo bem?

    Eu sei que se trata de uma situação diferente, mas acredito que uma análise da lógica usada nesta thread talvez te auxilie a encontrar uma resposta. Caso não seja isso exatamente, eu indicaria você pesquisar pelo termo "if (IsPostBack) infinite loop" ou algo do tipo, tem muitas situações parecidas postadas por aí.

    Espero ter ajudado.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ terça-feira, 27 de outubro de 2015 11:33
    • Marcado como Resposta Vando Junior quinta-feira, 29 de outubro de 2015 00:50
    terça-feira, 27 de outubro de 2015 11:30
  • Boa noite Marcos, fiz pesquisa que me orientou realizei alguns testes com o "if(IsPostBack)" em que retirando por completo ou adicionando o a palavra true ficando assim "if(IsPostBack == true)"a pagina continua a carregar. 

    Porém retirando a linha de código: "ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DSPerguntas", ObjectDataSource2)); "  o relatório principal vem a carregar exibindo os dados em que vem a duplica-los.  

    Fiz algumas mudanças no código, pois não consigo carrega o subrelatorio junto com o relatório principal. Segue o código:

      protected void Page_Load(object sender, EventArgs e)
            {
                if (IsPostBack == true)
                {

                     Sipom.DataSets.RelatorioTableAdapters.TodasTabelasTableAdapter Tabela = new                                              Sipom.DataSets.RelatorioTableAdapters.TodasTabelasTableAdapter();
                      Sipom.DataSets.Relatorio.TodasTabelasDataTable data = Tabela.GetDataTodos();

                                      ReportViewer1.LocalReport.Refresh();

                    ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource);

     public void SetSubDataSource(object remetente, SubreportProcessingEventArgs e)
            {
              
                Sipom.DataSets.RelatorioTableAdapters.TodasTabelasTableAdapter Tabela = new Sipom.DataSets.RelatorioTableAdapters.TodasTabelasTableAdapter();
                Sipom.DataSets.Relatorio.TodasTabelasDataTable data = Tabela.GetDataTodos();
                ReportDataSource RDS1 = new ReportDataSource("DSRespostas", (System.Data.DataTable)data);
                ReportViewer1.LocalReport.DataSources.Add(RDS1); }

    Com este código estou tentando processar o subrelatório porém aparece o erro na linha: ReportViewer1.LocalReport.DataSources.Add(RDS1);

    ERRO: 

    An exception of type 'System.InvalidOperationException' occurred in Microsoft.ReportViewer.WebForms.dll but was not handled in user code

    Additional information: O objeto de controle visualizador está no modo somente leitura

     

    Pode me ajudar não estou conseguindo resolver este problema?! O que eu quero é carrega o relatório principal com o sub relatório utilizando o tableadpater. 

    Desde já obrigado pela ajuda. 
    Qualquer outro ser humano pode ficar a vontade em me ajudar em. rsrs

    quarta-feira, 28 de outubro de 2015 21:12