Usuário com melhor resposta
Dúvida report viewer

Pergunta
-
Dúvida report viewer
Tenho um projeto windows forms mvc (3 camadas)
Na tela de vendas onde é preenchido as informações de venda, como cliente e itens da venda...
No momento que clico em salvar eu não limpo os campos e as informações permanecem lá na tela.
nesse momento eu quero pegar essas informações e mandar para impressão sem fazer busca no banco pois
as informações quero pega-las da tela que estão ali congeladas !
-----------------------------------------------------------
conforme o código abaixo eu capturo as informações que estão sendo carregadas em uma label eu
passo por parâmetro e maravilha exibo o relatório porem os itens de venda vem de um datagriview!
gostaria de uma ajuda pois é possível capturar as informações que estão na tela desse grid
e enviar para impressão no mesmo código que já pego o que esta fora do datagriview conforme o
código abaixo??
alguém sabe me informar se da para fazer dessa maneira e teria um exemplo ?
Obrigadonamespace RELATORIO { public partial class frmImpressaoTeste : Form { public frmImpressaoTeste(String Nome) { InitializeComponent(); reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.ReportEmbeddedResource = "RELATORIO.rptImpressaoTeste.rdlc"; //setando os parametros Microsoft.Reporting.WinForms.ReportParameter[] p = new Microsoft.Reporting.WinForms.ReportParameter[1]; p[0] = new Microsoft.Reporting.WinForms.ReportParameter("Nome", Nome); //setando os parametros no relatorio reportViewer1.LocalReport.SetParameters(p); reportViewer1.LocalReport.Refresh(); reportViewer1.RefreshReport(); } } } //--------------------------------- frmImpressaoTeste f = new frmImpressaoTeste(lblCliente.Text); f.Show();
- Movido AndreAlvesLimaModerator sexta-feira, 4 de novembro de 2016 15:00
Respostas
-
Olá Alexandre!
Você disse que já criou a table no Report Viewer, certo? Como é que você definiu a DataSource da tabela (que o Report Viewer pergunta automaticamente quando você tenta criar uma tabela) sem ter um DataSet no projeto?
O jeito mais fácil para resolver esse problema seria criar uma classe no seu projeto que represente essa estrutura de dados que você quer mostrar no relatório (ou seja, uma classe contendo as propriedades Codigo, Nome, Quantidade, ValorUnitario, ValorTotal).. Em seguida, no relatório você cria um novo DataSource utilizando como basse essa classe que você acabou de criar..
Aí, na hora de gerar o relatório, você cria um List dessa classe (List<SuaClasse>), carrega a lista com os dados do grid e passa essa lista para o seu relatório dessa forma:
reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("NomeDoSeuDataSource", suaLista));
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de novembro de 2016 14:35
- Marcado como Resposta Alexandre Maranhão sexta-feira, 18 de novembro de 2016 19:15
-
Olá novamente Alexandre!
Só para complementar, você pode seguir a mesma ideia que eu utilizei neste artigo aqui (só ignorando a parte em que eu pego os dados do banco de dados):
Gerando relatórios do Report Viewer com Entity Framework
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de novembro de 2016 14:35
- Marcado como Resposta Alexandre Maranhão sexta-feira, 18 de novembro de 2016 19:15
Todas as Respostas
-
Você tera que colocar uma table no reportviewer e criar um datatable associando o mesmo a essa tabela no seu form quando chamar o relatorio terá que passar um datatable com as mesmas colunas carregadas para esse datatable que os dados da grid será exibidos no relatorio
Links
https://msdn.microsoft.com/pt-BR/library/ms252073.aspx
http://www.linhadecodigo.com.br/artigo/3665/gerando-relatorios-com-reportviewer-em-aspnet.aspxJunior
-
Esses links são em vb e asp o que não me da uma visão de como prosseguir,
já criei o table no reportviewer mas não sei como implementar no código pegando o que está na tela ?
- Editado Alexandre Maranhão sábado, 5 de novembro de 2016 14:23
-
Olá Alexandre!
Você disse que já criou a table no Report Viewer, certo? Como é que você definiu a DataSource da tabela (que o Report Viewer pergunta automaticamente quando você tenta criar uma tabela) sem ter um DataSet no projeto?
O jeito mais fácil para resolver esse problema seria criar uma classe no seu projeto que represente essa estrutura de dados que você quer mostrar no relatório (ou seja, uma classe contendo as propriedades Codigo, Nome, Quantidade, ValorUnitario, ValorTotal).. Em seguida, no relatório você cria um novo DataSource utilizando como basse essa classe que você acabou de criar..
Aí, na hora de gerar o relatório, você cria um List dessa classe (List<SuaClasse>), carrega a lista com os dados do grid e passa essa lista para o seu relatório dessa forma:
reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("NomeDoSeuDataSource", suaLista));
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de novembro de 2016 14:35
- Marcado como Resposta Alexandre Maranhão sexta-feira, 18 de novembro de 2016 19:15
-
Olá novamente Alexandre!
Só para complementar, você pode seguir a mesma ideia que eu utilizei neste artigo aqui (só ignorando a parte em que eu pego os dados do banco de dados):
Gerando relatórios do Report Viewer com Entity Framework
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 11 de novembro de 2016 14:35
- Marcado como Resposta Alexandre Maranhão sexta-feira, 18 de novembro de 2016 19:15
-
Olá André, boa tarde!
Maravilha, é exatamente o que preciso !
quando eu definia o DataSource estava apontando o banco para ter o DataSet criado,
ai vendo seus artigos e seu comentário vi que posso criar a classe para referencia-la,
vou fazer dessa forma que você me passou,
terminando de implementar aqui te dou um feedback do resultado !
Obrigado pela ajuda... -
-
Maravilha, Alexandre! Fico feliz que tenha funcionado! Qualquer coisa, estamos aí.. :)
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima