none
Pasar array a ReportViewer RRS feed

  • Pregunta

  • Hola, buen día!

    Tengo un array, pero no se como pasarlo a un report viewer. Pensé en pasarlo como parámetro, pero solo me imprime el ultimo registro.


    JK

    viernes, 27 de julio de 2018 22:20

Respuestas

  • No, así no puede funcionar. Fíjate que el bucle va machacando la colección de parámetros a cada iteración, con lo que al final se queda el valor del último de todos.

    En lugar de usar el ReportParameters, puedes usar un bucle para meter los datos en un array (o en un datatable si lo prefieres, el bucle sería prácticamente igual), y luego pasar el array o el datatable usando el ReportDataSources. Pero obviamente eso requiere retocar el informe internamente para que procese esos datos, no da lo mismo que cuando recibe un valor en un parámetro.

    • Marcado como respuesta JuanK1916 martes, 31 de julio de 2018 15:37
    martes, 31 de julio de 2018 9:10
    Moderador
  • hola

    Entiendo usas Reporting Service, no? si es asi en lugar de array usa listas

    How to create local reports RDLC featuring barcode images in ASP.NET

    es lo mismo si es web o desktop, analiza el titulo

    Using Custom Objects as data source of my local report

    alli explica como usar objeto para asignar datos al reporte

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta JuanK1916 martes, 31 de julio de 2018 15:37
    martes, 31 de julio de 2018 12:13

Todas las respuestas

  • Puedes pasar tu array a un dataset del report. Normalmente a los datasets del report se les suele pasar un DataSet de ADO.NET, pero son más flexibles que eso: al dataset del report le puedes pasar cualquier IEnumerable, y el array es IEnumerable. La precaución que hay que tener es que los elementos del array tienen que ser clases que expongan como propiedades públicas los valores que desde el report vayas a tomar como columnas del dataset.

    https://msdn.microsoft.com/en-us/library/dd461468.aspx

    sábado, 28 de julio de 2018 10:56
    Moderador
  • Lo que pasa es que en mi array voy guardando números en base a unos cálculos por medio de un for, entonces se me ocurrió pasarlo como parámetro para que cada que vaya entrando al for vaya guardando los cálculos. Como el siguiente código:             

     for(int i=0;i<contar;i++)
                {
                    cant = Decimal.Parse(total[i, 1]);

                    for(int j=0;j<valores.Length;j++)
                    {
                        resDiv[j] = cant / valores[j];

                        if(resDiv[j]>=1)
                        {
                            resDiv[j]=decimal.Floor(resDiv[j]);


                            ReportParameter bill500 = new ReportParameter("cinco", resDiv[0].ToString());
                            reportViewer1.LocalReport.SetParameters(new ReportParameter[] { bill500 });

                            ReportParameter bill200 = new ReportParameter("dos", resDiv[1].ToString());
                            reportViewer1.LocalReport.SetParameters(new ReportParameter[] { bill200 });     

                      reportViewer1.RefreshReport();

                            for (int r = 0; r < resDiv[j]; r++)
                            {
                                cant = cant - valores[j];
                            }
                        }
                    }
                }

    Pero solo me imprime el ultimo registro de cada array en todas las filas


    JK


    • Editado JuanK1916 lunes, 30 de julio de 2018 21:25 Falta de información
    lunes, 30 de julio de 2018 20:47
  • No, así no puede funcionar. Fíjate que el bucle va machacando la colección de parámetros a cada iteración, con lo que al final se queda el valor del último de todos.

    En lugar de usar el ReportParameters, puedes usar un bucle para meter los datos en un array (o en un datatable si lo prefieres, el bucle sería prácticamente igual), y luego pasar el array o el datatable usando el ReportDataSources. Pero obviamente eso requiere retocar el informe internamente para que procese esos datos, no da lo mismo que cuando recibe un valor en un parámetro.

    • Marcado como respuesta JuanK1916 martes, 31 de julio de 2018 15:37
    martes, 31 de julio de 2018 9:10
    Moderador
  • hola

    Entiendo usas Reporting Service, no? si es asi en lugar de array usa listas

    How to create local reports RDLC featuring barcode images in ASP.NET

    es lo mismo si es web o desktop, analiza el titulo

    Using Custom Objects as data source of my local report

    alli explica como usar objeto para asignar datos al reporte

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta JuanK1916 martes, 31 de julio de 2018 15:37
    martes, 31 de julio de 2018 12:13