none
SubReport no Reportview versão 10 repete as informações do subreport RRS feed

  • Pergunta

  • Ambiente: Projeto em ASP.NET usando a versão 10 do Reportview.

    ao utilizar  em relatório com subreport os dados que deveriam ser alterados a cada execução do evento LocalReport_SubreportProcessing são repetidos ignorando o novo ReportDataTable

    Estou enviando parte do código para exemplificar, com o ReportView versão 9 é montado o relatório corretamente com registros relacionados com a "marca", porem no ReportView versão 10 o mesmo código imprime somente as informações da Marca de veículo = 1, e essa é repedita para cada registro do relatório "pai",  mesmo limpando o DataSorce com o comando Clear as informações exibidas são repeditas de acordo com o 1 registro impresso.

     

     

     

    void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
    		{
    			DataRow CurrentRecord = ((sender as LocalReport).DataSources[0].Value as DataTable).Rows[CurrentRow[e.ReportPath.ToString()]];
    			CurrentRow[e.ReportPath.ToString()] = CurrentRow[e.ReportPath.ToString()] + 1;
    			e.DataSources.Clear();
    			switch (e.ReportPath.ToString())
    			{
    				case "Report_Veiculo":
    					e.DataSources.Add(SubReportDS((int)CurrentRecord.ItemArray[0]));
    					break;
    				default:
    					break;
    			}
    		}
    
    		private ReportDataSource SubReportDS(int ID)
    		{
    			ReportDataSource DS = new ReportDataSource();
    			DS.Name = "ReportDataSource1";
    			DS.Value = GetCars(ID);
    			return DS;
    		}
    
    		static DataTable GetCars(int MarcaID)
    		{
    
    			DataTable table = new DataTable();
    
    			table.Columns.Add("Cod", typeof(int));
    			table.Columns.Add("Nome", typeof(string));
    			table.Columns.Add("Cor", typeof(string));
    			table.Columns.Add("MarcaID", typeof(int));
    
    			switch (MarcaID)
    			{
    				case 1:
    					table.Rows.Add(1, "GOL", "BRANCO", 1);
    					table.Rows.Add(2, "POLO", "PRETO", 1);
    					table.Rows.Add(3, "BORA", "AMARELO", 1);
    					break;
    				case 2:
    					table.Rows.Add(4, "UNO", "VERDE", 2);
    					table.Rows.Add(5, "PALIO", "AMARELO", 2);
    					break;
    				default:
    					table.Rows.Add(6, "C3", "PRETO", 3);
    					table.Rows.Add(7, "C4", "PRETO", 3);
    					break;
    			}
    			return table;
    		}
    

      

    segunda-feira, 24 de janeiro de 2011 19:06