c# - reporte - parametros en report builder
Proporcionar datos de una clase de código al diseñador de Reporting Services en VS 2013 (2)
.rdlc
crear un informe local de SQL Server Reporting Services (archivo .rdlc
) y conectar este informe a algunos conjuntos de datos que genero en el código (sin conexión directa a SQL Server).
Creo una clase ReportDataProvider
con algunos métodos de instancia que devuelven IList<T>
para varios conjuntos de criterios, pero parece que no puedo encontrar una manera de hacer que esos métodos de suministro de datos aparezcan en el diseñador de Reporting Services dentro de Visual Studio 2013.
Cuando miro el diálogo que aparece después de hacer clic en Add DataSet
Datasets
en el nodo Datasets
en la ventana del Explorador de Report Data
, veo un montón de mis clases enumeradas allí, pero no mi clase de proveedor de datos.
¿Hay algo especial que deba tener en cuenta (hacer que la clase sea static
? ¿Decorarla con algún atributo?) Para que se muestre en esa lista desplegable de posibles fuentes de datos. Intenté varias cosas, pero no he podido encontrar ninguna forma de hacer que esto funcione correctamente ...
Investigo un poco y pruebo diferentes formas de agregar clases. Desafortunadamente, sucede que no puede ver clases estáticas en este diseñador. Probé de diferentes maneras pero sin suerte.
Para las clases no estáticas, este manual funciona para mí todo el tiempo, incluso con Interfaces
como IList
, pero no lo represento aquí:
- Asegúrese de que el espacio de nombres con sus clases de informe de datos esté disponible en su proyecto con archivos .rdlc. Puede ser que necesite agregar una referencia.
- Escribir clase de informe de datos y reconstruir solución.
- Cierre y vuelva a abrir los archivos .rdlc en su VS.
Utilizo VS 2013 Ultimate Update 2.
Estas son mis clases:
using System.Collections.Generic;
namespace YourReportNamespace
{
public class ReportClass
{
public List<string> TestReportData()
{
return new List<string>();
}
public static List<string> StaticTestReportData()
{
return new List<string>();
}
}
public class ReportWithFieldsClass
{
private List<string> Data = new List<string>();
public List<string> TestReportData()
{
return Data;
}
public List<string> TestReportData2()
{
return Data;
}
public static List<string> StaticTestReportData()
{
return new List<string>();
}
}
public static class ReportWithFieldsStaticClass //This class will not appear
{
private static List<string> Data = new List<string>();
public static List<string> StaticTestReportDataFromField()
{
return Data;
}
public static List<string> StaticTestReportData()
{
return new List<string>();
}
}
}
Esto es lo que obtuve en el diseñador después de pasar el manual:
Tuve un problema similar. Encontrado si se logró obtener una construcción sin errores, entonces mi espacio de nombres parecería seleccionar en las fuentes de datos.