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;
}