none
Pasar colección de objetos como parámetro a reportviewer rdlc RRS feed

  • Pregunta

  • Buenas:

    mi pregunta es si se puede pasar una colección de objetos como un parámetro a un Report rdlc. Creo que no pero para confirmarlo.

    Si no es posible, ¿Como podría hacer lo siguiente:? el usuario selecciona unas cuantas facturas para generar el informe de todas ellas a la vez, pero la factura va a nombre del alumno si este tiene dni, sino va a nombre del padre.

    ¿Podría hacer lo anterior con una consulta para evitar tener que pasar parámetros? la consulta sería sencilla si no tuviera la condición de que se cogen los datos del padre si el alumno no tiene dni...

    Mi Base de Datos es Access.

    Gracias de antemano.


    • Editado cavililla viernes, 15 de abril de 2016 8:44
    viernes, 15 de abril de 2016 8:41

Respuestas

  • Lo habitual es pasarle un DataTable al Report. Nada te impide definir por código el DataTable y cargarlo de datos a partir de una o más colecciones de objetos, usando un bucle que lea los objetos y pase sus propiedades a las columnas del DataTable.

    Pero creo que no es necesario. Si no me equivoco, el rdlc te admite que le pases una colección de objetos (el requisito es que sea IEnumerable), a condición de que los objetos en cuestión tengan propiedades públicas cuyos nombres coincidan con los nombres de las columnas que estás mostrando en el report.

    • Marcado como respuesta cavililla viernes, 15 de abril de 2016 15:57
    viernes, 15 de abril de 2016 9:18

Todas las respuestas

  • Lo habitual es pasarle un DataTable al Report. Nada te impide definir por código el DataTable y cargarlo de datos a partir de una o más colecciones de objetos, usando un bucle que lea los objetos y pase sus propiedades a las columnas del DataTable.

    Pero creo que no es necesario. Si no me equivoco, el rdlc te admite que le pases una colección de objetos (el requisito es que sea IEnumerable), a condición de que los objetos en cuestión tengan propiedades públicas cuyos nombres coincidan con los nombres de las columnas que estás mostrando en el report.

    • Marcado como respuesta cavililla viernes, 15 de abril de 2016 15:57
    viernes, 15 de abril de 2016 9:18
  • ¿Y como sería el ejemplo de pasar esa colección de objetos al rdlc? Los nombres si que coincidirían ya que los objetos que quiero pasar son los DataRow propios de la BD. 

    La primera opción creo que también me valdrá, no lo había pensado.

    Gracias


    • Editado cavililla viernes, 15 de abril de 2016 11:54 Me faltaba texto
    viernes, 15 de abril de 2016 11:52
  • ¿Y como sería el ejemplo de pasar esa colección de objetos al rdlc?

    Exactamente igual que cuando le pasas un DataTable pero poniendo la colección en lugar del DataTable (recuerda que el Value del ReportDataSource es de tipo Object y admite cualquier cosa, pero solo funciona en tiempo de ejecución con ciertos tipos de objetos, entre los cuales están los IEnumerables):

    ReportDataSource reportDataSource = New ReportDataSource()
    reportDataSource.Name = "NombreDelDataSetDelReport"
    reportDataSource.Value = MiColecion
    reportViewer1.LocalReport.DataSources.Add(reportDataSource)

    viernes, 15 de abril de 2016 12:40
  • Muchas gracias, me ha servido de mucha ayuda.
    viernes, 15 de abril de 2016 15:57