2008-12-08 7 views
32

Wiem, że użycie kontrolek po stronie serwera jest nie-nie w środowisku ASP.NET MVC, jednak mamy długą listę raportów kryształów, które firma już przygotowała dla poprzedniej aplikacji, która Chciałbym wykorzystać dla naszej nowej aplikacji ASP.NET MVC.Crystal Reports w ASP.NET MVC

Czy istnieje odpowiedni sposób korzystania z raportów kryształów w ASP.NET MVC? Jeśli tak to jak?

Odpowiedz

13

Mieliśmy/mieliśmy podobną sytuację w pracy.

Rozwiązanie używamy:

  • Utwórz katalog oddzielna raportów
  • Tworzenie normalne strony aspx dla raportów

nie widzieliśmy żadnych problemów (oprócz normalnych te kryształowe) z ta konfiguracja.

+3

Jak można wykluczyć katalog z trasy? – Odd

+0

Właściwie to właśnie sprawdziłem. Nie trzeba modyfikować trasy. – leppie

+0

Jeśli dodałeś raport Crystal w asp.net MVC, czy napotkałeś problem z raportem Odświeżanie kryształu? Czy napotkano problem "Błąd sprawdzania poprawności adresu MAC komputera"? – Vikas

70

To całkiem proste. wystarczy dodać następujące odniesienia do projektu MVC:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared

stosowanie metody działania jak poniżej:

  • C#:

    using CrystalDecisions.CrystalReports.Engine; 
    
    public ActionResult Report() 
        { 
         ReportClass rptH = new ReportClass(); 
         rptH.FileName = Server.MapPath("[reportName].rpt"); 
         rptH.Load(); 
         rptH.SetDataSource([datatable]); 
         Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
         return File(stream, "application/pdf"); 
        } 
    
  • VB.NET:

    Imports CrystalDecisions.CrystalReports.Engine 
    
    Public Function Report() As ActionResult 
        Dim rptH As New ReportClass() 
        rptH.FileName = Server.MapPath("[reportName].rpt") 
        rptH.Load() 
        rptH.SetDataSource([datatable]) 
        Dim stream As IO.Stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat) 
        Return File(stream, "application/pdf") 
    End Function 
    
+19

Nice - bardzo elegancki (raporty Crystal i elegancki w tej samej rozmowie - koniec cue świata) – Basic

+0

Jeśli to działa, jest to fantastyczne rozwiązanie, dzięki – Yablargo

+0

http : //stackoverflow.com/questions/4294762/crystal-reports-for-visual-studio-2010-error w celu uzyskania dalszych informacji, których możesz potrzebować. (I Did!) – Yablargo

0

Wystarczy dodać to odwołanie: using CrystalDecisions.CrystalReports.Engine;
niż zrobić tę akcję:

using CrystalDecisions.CrystalReports.Engine; 
    public ActionResult Report() 
      { 
       List<Table> table = new List<Table>(); 
       ReportDocument rd = new ReportDocument(); 
       rd.Load(Path.Combine(Server.MapPath("~/Repport/CrystalReport1.rpt"))); 

       Response.Buffer = false; 
       Response.ClearContent(); 
       Response.ClearHeaders(); 
       Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
       stream.Seek(0, SeekOrigin.Begin); 


       return File(stream, "application/pdf", "Suivie Historique.pdf"); 


      } 
+1

** Z kolejki recenzji **: Czy mogę poprosić o dodanie kontekstu kodu źródłowego? Odpowiedzi dotyczące tylko kodu są trudne do zrozumienia. Pomoże to pytającemu i przyszłym czytelnikom, jeśli dodasz więcej informacji do swojego postu. – RBT