studio - pasar parametros reportviewer c#
Problemas al establecer el origen de datos RDLC en un objeto (5)
- Asegúrese de que las clases estén en el mismo espacio de nombres que la aplicación.
- Intente crear la aplicación antes de crear el informe
- Inicie el asistente de informes. En DataSouce, seleccione el nombre de su aplicación web.
- Debajo de los conjuntos de datos disponibles, debería ver lo que Visual Studio interpreta como su "método de selección". Si todo está bien, esto debería ser TurnArounds.
Es posible que deba colocar el archivo de clase en la carpeta App_Data o App_Code, pero no estoy seguro.
Esto también podría ayudar.
http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx
Fondo:
Me han asignado la tarea de convertir una aplicación de base de datos de Access a ASP.Net C # MVC. Esta es mi primera aplicación MVC.
Hay 10 informes que necesitan convertir. Estamos usando archivos RDLC y reportviewer. Estoy usando Visual Studio 2010 con todos los parches más recientes. Nos estamos conectando a una base de datos de SQL Server que ha sido poblada por la base de datos existente de Access, por lo que la estructura de la tabla está bastante definida, o tendremos que intentar convertir 10 años de datos.
He completado todos menos dos de los informes. Los informes finales requieren más procesamiento y no solo muestran los datos de la base de datos. La forma más fácil de hacer esto sería crear un objeto C # y hacer todo el procesamiento del lado del servidor, luego usar RDLC para mostrar los resultados.
Problema
El problema que tengo es que Visual Studio no reconocerá los objetos que he creado como posibles fuentes de datos. Cada vez que intento "agregar un conjunto de datos", aparece el "asistente de configuración de la fuente de datos" y solo ofrece la base de datos de SQL Server como la posible conexión de datos. Sé que existe una pantalla que le permite seleccionar un objeto como su conjunto de datos, pero nunca veo esa pantalla.
Aquí están los objetos (funciones de procesamiento eliminadas para mayor claridad):
public class TurnAroundVal
{
// Registration Package information
public string dataType { get; set; }
// Calculated totals; values only set through constructor or calculation function
public int packageCount { get; private set; }
public int dayCount { get; set; }
public double avgTurnAround { get; private set; }
public int upperRange { get; private set; }
public int lowerRange { get; private set; }
}
public class TurnAroundVals
{
// Public Variables
public IEnumerable<TurnAroundVal> TurnArounds { get; private set; }
public DatePass dates { get; set; }
public int pkgTotal { get; private set; }
public double dayTotal { get; private set; }
public double avgAllTurnArounds { get; private set; }
}
También estaría dispuesto a usar el IEnumerable de "TurnAroundVal" como fuente de datos, y simplemente pasar las fechas, int, y se duplica como parámetros. Cualquiera funcionaria
Pregunta
¿Hay una configuración en Visual Studio 2010 que me falta para permitir que el Diseñador de RDLC vea los objetos que creé? ¿Me equivoco al pensar que esto funcionará con las clases que definí?
Responder
Todas las sugerencias dadas fueron útiles, pero en última instancia, lo que funcionó para mí fue crear un proyecto temporal no web en la misma solución y crear el RDLC allí. Cuando fui a agregar un conjunto de datos, muestra "Objetos" como una opción. Debe agregar una referencia a su proyecto web para que sus objetos estén visibles, pero luego puede elegir el que desee y usarlo en el RDLC. Después de eso, simplemente puede arrastrar y soltar el archivo RDLC en su proyecto web, eliminar el proyecto temporal y listo. Solo recuerde que tiene que agregar las fuentes de datos manualmente en el código, y deben tener el mismo nombre que el especificado en el RDLC.
Acabo de encontrar este mismo problema al intentar crear informes RDLC en un proyecto MVC de ASP.NET en Visual Studio 2017 , por lo que lo agrego como una respuesta por separado para aclarar que esto sigue siendo un problema en enero de 2018.
Mi solución consistía en un proyecto de biblioteca C # y un proyecto de cliente MVC.
Al agregar informes (seleccionando al agregar un nuevo elemento, luego eligiendo un elemento del Asistente de informes) en el proyecto de biblioteca de C #, se abre el Asistente de informes con el Asistente de configuración de fuente de datos (donde puedo elegir si usar una base de datos, un servicio o un objeto como la fuente de datos) modalmente encima de ella:
Mientras que, la elección de agregar un nuevo elemento del asistente de informes en el proyecto MVC acaba de abrir el Asistente de informes sin el Asistente de configuración de fuente de datos:
Intenté agregar clases de objetos de negocios en mi proyecto MVC, volviéndolo a compilar y luego agregando un Informe al Proyecto MVC, pero aún tengo la segunda captura de pantalla, por lo que parece que simplemente no obtiene el Asistente de configuración de fuente de datos al agregar a Proyectos de MVC por alguna razón.
Establezca sus objetos en el mismo espacio de nombres pero en un proyecto diferente al que luego haga referencia en su proyecto de UI.
También intente implementar INotifyPropertyChanged
.
Pude agregar un objeto como fuente de datos en VS 2017 sin el asistente de informes. [Aplicación de Winforms usando c #] [PS Soy un NOOB, así que habrá errores, etc., pero espero que esto ayude a dar una dirección.] Pasos que usé:
parte A 1. cree un objeto que represente los datos, por ejemplo: clase objeto / modelo en mi caso, es un objeto de cita
class FutureVisitsModel
{
public DateTime StartDate {get; set;}
public string Client_Id { get; set; }
public string Treatment_Desc { get; set; }
public string Service_Code { get; set; }
public FutureVisitsModel()
{
DateTime startdate = StartDate;
String clinetid = Client_Id;
String treatmentdesc = Treatment_Desc;
String serviceCode = Service_Code;
}
}
Parte B: crear informe 2. Se agregó el informe a la solución: se hizo clic con el botón derecho en la solución, se seleccionó Agregar nuevo elemento y se seleccionó el informe. Ingrese la descripción de la imagen aquí 3. Abra el informe en blanco 4. Desde la caja de herramientas, arrastre y suelte una tabla en el informe 5. Un diálogo se abre para elegir una fuente de datos 6. seleccione el objeto de su solución [ypu buscará la clase que creó en la parte A
Parte C: cree un formulario 7 del visor de informes. En el explorador de soluciones cree un formulario nuevo "formRptViewer" 8. abra el formulario y agregue el control del visor de informes 9. Si no tiene el control en su caja de herramientas, deberá instalar el informe. visor de paquetes de nugget o instalar a través de la consola del gestor de paquetes versión de formularios web: Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms winforms versión: Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
9.1 configure el control del visor de informes como público en el explorador de soluciones; haga clic en el menú desplegable junto a su formRptViewer para ver los archivos que conforman el formulario, edite este archivo: formRptViewer.Designer.cs cambie el control del monitor del público al público público Microsoft.Reportes .WinForms.ReportViewer ReportViewer1;
parte D: cree una tabla de datos y envíela al informe 10. cree una tabla de datos DataTable dataTableFutureVisits = new DataTable (); [tendrá que completar los datos con sus propios datos] 11. agregue usando la declaración usando Microsoft.Reporting.WinForms; 12. configure el origen de datos y cree una nueva instancia del visor de informes
ReportDataSource rs = new ReportDataSource();
rs.Name = "DataSet1";
rs.Value = dataTableFutureVisits;
FormRptViewer frm = new FormRptViewer();
frm.ReportViewer1.LocalReport.DataSources.Clear();
frm.ReportViewer1.LocalReport.DataSources.Add(rs);
frm.ReportViewer1.LocalReport.ReportEmbeddedResource = "ChiroRecallList.RptFutureVisits.rdlc";
// name the report with date
frm.ReportViewer1.LocalReport.DisplayName = "Your File Name Goes Here" + "_" + DateTime.Now.ToString("yyyyMMdd HH:mm");
frm.ShowDialog();
Parte E: actualización del informe: agregar columnas a la tabla de datos y mostrarlas en el informe [también se bifurca para eliminar una columna]
- agrega una columna a tu datatable
- cambie su clase de objeto para reflejar los datos [como en la parte A]
- abra el informe y elimine el conjunto de datos [no fuente de datos]
- en el explorador de soluciones: hay un desplegable de propiedades que se expande
- expandir la carpeta de fuentes de datos
elimine la fuente de datos que lleva el nombre de la captura de pantalla del modelo
screenshot solución limpia y reconstruir
- abra el informe y haga clic con el botón derecho en su fuente de datos y agregue una nueva captura de pantalla de conjunto de datos
Visual Studio no reconoce su clase cuando solo utiliza miembros públicos. Cuando usas getter y setter, puedes ver tu clase cuando eliges tu fuente de datos.
Hay algunos otros asistentes en Visual Studio que no funcionan con miembros públicos.
Saludos, Markus