2010-07-20 31 views

Respuesta

2

Sí, se puede usar el visor de informes telerik. Esto puede ayudar: http://www.telerik.com/community/forums/reporting/telerik-reporting/reportviewer-and-asp-net-mvc.aspx

Creo que se necesita lo siguiente:

  • usar un formulario web, no un punto de vista (que podría funcionar con un punto de vista, no puede recordar
  • con runat = 'servidor'

que puede haber cambiado desde la última vez que utilicé (con el apoyo MVC), pero esta es la forma en que he implementado él. ha sido un poco de tiempo, sin embargo.

HTH.

4

Hay un par de cosas que debe hacer: 1. Debe utilizar el formulario ASPX.NET en lugar de la vista Razor. 2. Debe presentar su página .aspx como una vista parcial dentro de su controlador 3. Deberá sobrescribir algunas clases de css yy nuevas para que el informe se reproduzca correctamente en el navegador. Vea este video tutorial para más detalles: http://www.youtube.com/watch?v=t-iA05KpDFM

O utilice esta fuente de ejemplos y de aquí: http://www.telerik.com/community/code-library/reporting/general/using-telerik-web-reportviewer-in-asp-net-mvc-application.aspx

Buena suerte!

6

La manera en que se implementó la generación de informes es sin un visor, en su lugar se presenta un informe "pdf" que se puede descargar.

Aquí hay un escenario, el usuario compra un producto en línea y al final del proceso de compra se presenta un recibo a través de un informe Telerik.

  1. Agregue las referencias a los ensamblajes de informes de Telerik en su proyecto.
  2. Crear un informe. Telerik TV tiene algunos excelentes tutoriales sobre cómo empezar con Telerik reporting.
  3. El controlador realizaba una llamada al repositorio y volvía a enviar el flujo de bytes al navegador.

    public virtual ActionResult DownloadReceiptReport(Order model) 
    { 
        byte[] contents = ShoppingCartRepository.GetReceiptReport(model); 
        return File(contents, "application/pdf", "Receipt.pdf"); 
    } 
    
  4. En su repositorio crear una función para generar el informe, en este caso, el informe no está directamente vinculada a un SqlDataSource, la fuente de datos que se está suministrando un componente ObjectDataSource:

    public byte[] GetReceiptReport(Order order) 
    { 
        Telerik.Reporting.ObjectDataSource objectDataSource = new Telerik.Reporting.ObjectDataSource(); 
        objectDataSource.DataSource new PurchaseReceiptReportModel() 
        { 
         CustomerName = order.CustomerName, 
         Total= order.Total, 
         PurchaseDate= DateTime.Now 
        }; 
    
        PurchaseReceiptReport report = new PurchaseReceiptReport(); 
        report.DataSource = objectDataSource; 
    
        ReportProcessor reportProcessor = new ReportProcessor(); 
        RenderingResult result = reportProcessor.RenderReport("PDF", report, null); 
        return result.DocumentBytes; 
    } 
    

Al final, el usuario recibirá una ventana emergente de descarga con un informe en pdf.

Espero que esto ayude.

+0

Eso es realmente una gran pieza de asesoramiento. Gracias un millón por eso. – ppumkin

0

Tengo una solución alternativa para generar un pdf a partir del informe que surgió después de probar la solución anterior, pero necesitaba pasar un parámetro y no pude hacerlo utilizando el objeto de informe en el ejemplo anterior . Todo mi código está en una acción de controlador, supongo que moverlo al repositorio valdría la pena hacerlo, pero por el bien de este post, lo mantengo simple.

El informe PackingList fue creado según Telerik ejemplos y se encuentra en una biblioteca de informes llamada LogisticsReports. Tengo una instrucción using en la parte superior del controlador "que usa Telerik.Reporting";

public ActionResult ShippingPackingList(int id = 0) 
    { 
     var instanceReportSource = new InstanceReportSource(); 
     instanceReportSource.ReportDocument = new LogisticsReports.PackingList(); 
     instanceReportSource.Parameters.Add(new Parameter("ShippingHeaderID", id)); 
     Telerik.Reporting.Processing.ReportProcessor reportProcessor = new Telerik.Reporting.Processing.ReportProcessor(); 
     Telerik.Reporting.Processing.RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null); 
     byte[] contents = result.DocumentBytes; 
     return File(contents, "application/pdf", "PackingList1.pdf"); 

    } 
Cuestiones relacionadas