Subscribe:

Main Menu

Jumat, Februari 20, 2015

Using Crystal Report at .Net C# MVC2

Sudah lama banget gak megang coding. akhirnya sekarang kembali kedunia programming. bukan java lagi. tapi sekarang beralih ke bahasa pemrograman .Net. tepatnya .Net dengan C#. Sebuah tantangan baru lagi di dalam karirs saya.. (ciee...haha..)

Dalam pembuatan sebuah Aplikasi pelaporan menjadi tujuan utama. hal ini juga yang membuat saya berpikir bagaimana cara membuat laporan memakai C#. apalagi ini web base...kalau menggunakan Desktop ada crystal report yang bisa kita gunakan dengan mudah. bagaimana dengan Web Base apakah kita bisa menggunakannya?

Setelah saya pelajari, ternyata Crystal report juga support di gunakan di ASP.Net. hanya saja permasalahannya saya menggunakan C# dengan framework Mvc2. di mana halaman ASP dan codenya di pisah menjadi Model, View dan Controller. seteleha melakukan percobaan akhirnya saya bisa menyatukan antara .Net Mvc2 dengan Crystal Report. berikut step-stepnya.

  • Pertama buat halaman ASP biasa. saya namanakan Report.aspx
  • Tambahkan Crystal Report Tag di dalam ASP tersebut. berikut codenya.
    <CR:CrystalReportViewer ID="crViewer" runat="server" AutoDataBind="true" EnableDatabaseLogonPrompt="false" EnableParameterPrompt="false" />
  • lalu di file Report.aspx.cs berikan code seperti berikut
    protected void Page_Load(object sender, EventArgs e){
    
    
    Dictionary<string, object> dict = (Dictionary<string, object>)HttpContext.Current.Session["__ControllerTempData"];
    ArrayList list = (ArrayList)dict["reportData"]; string fileName = (string)dict["reportName"]; ReportClass rptH = new ReportClass(); rptH.FileName = fileName; rptH.Load(); rptH.SetDataSource(list); crViewer.ReportSource = rptH; }
  • Step pertama sudah selesai. kita lanjut membuat Custom Action Result agar kita mudah memanggil report kita.
  • Buat class saya beri nama ReportAction.cs. buat class tersebut extend ke ActionResult. untuk lebih jelasnya berikut code ReportAction class
    
    Note : yang ada tanda << . ganti dengan code yang sesuai dalam program
      public class ReportAction : ActionResult
     {
         public ReportAction(string reportName, ArrayList list)
        {
           this.reportName = reportName;
           this.list = list;
        }
         public override void ExecuteResult(ControllerContext context)
        {
           context.Controller.TempData["reportData"]=<<< List Data yang ingin di tampilkan
           context.Controller.TempData["reportName"]=<<< di isi letak file Crysltal Report

           string reportUrl = <<< di isi letak file Report.aspx yang tadi kita buat
           string destinationUrl = UrlHelper.GenerateContentUrl(reportUrl, context.HttpContext);
          context.HttpContext.Response.Redirect(destinationUrl, endResponse: false);
        }
     }

  • Jika sudah selesai. jika kita ingin menampilkan report. kita tinggal manggil seperti ini
    
  • Note : yang ada di dalam << >> ganti dengan code yang sesuai dalam program
      return new ReportAction(<<Letak file Crystal Report>>, <<ArrayList data>>);



0 komentar: