2012-06-14 28 views
16

Antecedentes:Problemas de ajuste RDLC origen de datos al objeto

he sido la tarea de convertir una aplicación de base de datos de acceso a ASP.Net C# MVC. Esta es mi primera aplicación MVC.

Hay 10 informes que necesitan ser convertidos. 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 de Access existente, por lo que la estructura de la tabla es bastante inamovible, o bien tendremos que tratar de convertir 10 años de datos.

He completado todos los informes menos dos. Los informes finales requieren más procesamiento y no solo muestran 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 en el lado del servidor, luego use RDLC para mostrar los resultados.

Edición

El problema que estoy teniendo es que Visual Studio no reconocerá los objetos que he creado como fuentes de datos posibles. Cada vez que trato de "agregar conjunto de datos" aparece el "asistente de configuración del origen de datos" y solo ofrece la base de datos SQL Server como 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.

Éstos son los objetos (las 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 utilizar el IEnumerable de "TurnAroundVal" como origen de datos, y sólo tiene que pasar las fechas, int, y dobles en como parámetros. Cualquiera de los dos funcionaría.

Pregunta

¿Hay un ajuste en Visual Studio 2010 que me falta para permitir que el diseñador RDLC para ver los objetos que he creado? ¿Me equivoco al pensar que esto funcionará con las clases que definí?

respuesta

Todas las sugerencias dadas eran útiles, pero en última instancia lo que tengo que trabajar para mí fue la creación de un proyecto web no temporal 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 sean visibles, pero luego puede elegir el que desee y usarlo en el RDLC. Después de eso, puede simplemente arrastrar y soltar el archivo RDLC en su proyecto web, eliminar el proyecto temporal y listo. Solo recuerde que debe agregar los orígenes de datos manualmente en el código, y deben tener el mismo nombre que especificó en el RDLC.

Respuesta

3
  1. Asegúrese de que las clases estén en el mismo espacio de nombres que la aplicación.
  2. Intente crear la aplicación antes de crear el informe
  3. Inicie el asistente de informes. En DataSouce, seleccione el nombre de su aplicación web.
  4. En Conjuntos de datos disponibles, debería ver lo que Visual Studio interpreta como su "Método seleccionado". 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

+2

Ya intenté todo eso, pero sigue siendo una buena información. Lo que terminé haciendo fue crear un nuevo proyecto no web en la misma solución, crear el RDLC allí, luego arrastrarlo/soltarlo en el proyecto web. Probablemente haya una manera menos complicada de hacerlo, pero funcionó. – War2d2

2

Establecer los objetos con el mismo espacio de nombres, sino en un proyecto diferente que luego se hace referencia en su proyecto de interfaz de usuario.

También intente implementar INotifyPropertyChanged.

2

Visual Studio no reconoce su clase cuando solo usa miembros públicos. Cuando usas getter y setter, puedes ver tu clase cuando eliges tu fuente de datos.

Hay otros asistentes en Visual Studio que no funcionan con miembros públicos.

Cheers, Markus

+0

¿Está diciendo que las propiedades implementadas automáticamente no funcionan? – Ben

0

Acabo de llegar a través de este mismo problema al intentar crear RDLC informa en un proyecto ASP.NET MVC en Visual Studio 2017 , así que estoy añadiendo esto como una respuesta por separado para dejar en claro que esto sigue siendo un problema en enero de 2018.

Mi solución consistió en un proyecto de biblioteca C# y un proyecto de cliente MVC.

Adición de informes (eligiendo a añadir un nuevo elemento, a continuación, elegir un elemento Asistente para informes) en la librería del proyecto C# abre el Asistente para informes con el Asistente para la configuración de orígenes de datos (donde pueda elegir si desea utilizar una base de datos , servicio o un objeto como el origen de datos) de forma modal en la parte superior de la misma:

Report Wizard showing Data Source Configuration Wizard

Considerando que, la elección para añadir un elemento asistente nuevo informe en el proyecto MVC acaba de traer el asistente para informes sin el origen de datos Asistente de configuración:

Report Wizard without the Data Source Configuration Wizard

He intentado añadir clases de objetos de negocio en mi proyecto MVC, recompilarla y luego añadir un Informe al Proyecto MVC otra vez, pero aún así me dieron la segunda pantalla, por lo que parece que simplemente no consigue el Asistente de configuración de origen de datos al agregar a proyectos MVC por alguna razón.

+1

Gracias por la actualización. Desde entonces, he cambiado de trabajo y no utilizamos RDLC aquí, así que no me he mantenido al tanto de la situación. Todavía parece una forma extraña de implementarlo, pero tal vez haya una razón detrás de esto. – War2d2

Cuestiones relacionadas