2008-12-08 45 views
32

Tôi biết việc sử dụng các điều khiển phía máy chủ là không có trong ASP.NET MVC, tuy nhiên chúng tôi có một danh sách dài các báo cáo tinh thể mà công ty đã sản xuất cho một ứng dụng trước đó Tôi muốn sử dụng cho ứng dụng ASP.NET MVC mới của chúng tôi.Crystal Reports trong ASP.NET MVC

Có cách nào thích hợp để sử dụng báo cáo tinh thể trong ASP.NET MVC không? Nếu vậy, làm thế nào?

Trả lời

13

Chúng tôi có/có tình huống tương tự tại nơi làm việc.

Các giải pháp chúng tôi sử dụng:

  • Tạo một thư mục riêng biệt cho các báo cáo
  • Tạo trang ASPX bình thường đối với các báo cáo

Chúng tôi đã không gặp bất kỳ vấn đề (ngoài những pha lê bình thường) với thiết lập này.

+3

Làm thế nào để bạn loại trừ thư mục từ các tuyến đường? – Odd

+0

Thực ra, tôi vừa kiểm tra. Không cần sửa đổi lộ trình. – leppie

+0

Nếu bạn thêm một báo cáo Crystal trong asp.net MVC thì bạn có gặp phải vấn đề về báo cáo Refreshing Crystal không? Bạn đã gặp phải "Xác thực lỗi MAC của Viewstate không thành công"? – Vikas

70

Thực tế khá đơn giản. chỉ cần thêm tài liệu tham khảo cho dự án MVC của bạn như sau:

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

sử dụng phương pháp hành động như dưới đây:

  • 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

Đẹp - rất thanh lịch (Crystal reports và thanh lịch trong cùng một cuộc trò chuyện - cue end of the world) – Basic

+0

Nếu điều này hoạt động, đây là một giải pháp tuyệt vời, cảm ơn – Yablargo

+0

http : //stackoverflow.com/questions/4294762/crystal-reports-for-visual-studio-2010-error để biết thêm thông tin mà bạn có thể cần. (Tôi đã làm!) – Yablargo

0

Chỉ cần thêm tài liệu tham khảo này: using CrystalDecisions.CrystalReports.Engine;
hơn làm hành động này:

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

** Từ hàng đợi xem xét **: Tôi có thể yêu cầu bạn thêm một số ngữ cảnh xung quanh mã nguồn của bạn. Các câu trả lời chỉ có mã khó hiểu. Nó sẽ giúp người hỏi và người đọc trong tương lai cả khi bạn có thể thêm nhiều thông tin hơn trong bài đăng của mình. – RBT

Các vấn đề liên quan