2011-09-12 22 views
5

Pasar parámetros de informe a informe integrado en VS 2010 RDLCPasar parámetros de informe a informe integrado en VS 2010 RDLC

estoy teniendo algunas dificultades definir y pasar los parámetros de informe de informes integrados en VS 2010. En VS 2008 en la vista de diseño I Pudo hacer clic derecho y definir el parámetro del informe y hacer que se pasara.

En VS 2010, falta el aviso. Entonces mi pregunta es, ¿cómo puedo pasar un valor de un informe principal a un subinforme en VS 2010?

Además, esto es lo que se muestra en el cuadro de diálogo Propiedades del informe dentro de VS 2010:

Por el momento he definido el parámetro en el informe integrado de forma manual en el XML, pero estoy recibiendo un error de la informe principal cuando intento pasar un parámetro de cualquier tipo al subinforme.

El error es:

An error occurred during local report processing. 

Value cannot be null. Parameter name: value 

Cuando no tengo un valor de parámetro con nombre definido en cualquier lugar.

Respuesta

13
  • Goto Subinforme ->panel Datos de informe -> Parámetros y añadir el parámetro que desea recibir.

  • Goto MainReport ->Haga clic derecho en Subinforme - Propiedades>subinforme -> Parámetros y añadir el mismo nombre parametro y recoger el valor correspondiente en el menú desplegable.

  • Maneje el evento SubreportProcessing y configure el origen de datos para el subinforme. En mi caso, el origen de datos del informe principal era del tipo List<Order> y el parámetro era OrderID. Muestra de código a continuación.

ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SetSubDataSource); 
public void SetSubDataSource(object sender, SubreportProcessingEventArgs e) 
{ 
    var mainSource = ((LocalReport) sender).DataSources["MainDataSet1"]; 
    var orderId = int.Parse(e.Parameters["OrderID"].Values.First()); 
    var subSource = ((List<Order>)mainSource.Value).Single(o => o.OrderID == orderId).Suppliers; 
    e.DataSources.Add(new ReportDataSource("SubDataSet1", subSource)); 
} 
+1

** Muy Importante ** El nombre de la '' método ReportDataSource' en e.DataSources.Add' debe coincidir con el nombre de origen de datos en el informe integrado con exactitud. –

+0

Una alternativa para definir subSource como esa es usar esta etiqueta: Esto hará lo mismo y le ahorrará esas 3 líneas de código también. –

0

var subfuentes = ((Lista) mainSource.Value) La sola (o => o.OrderID == orderId) .Suppliers;

lo que significa

Cuestiones relacionadas