共用方式為


Web Form Viewer 的報表繫結選項

除非另有註明,否則以下案例適用於 Visual Basic .NET 和 C# 應用程式以及 Managed C++ 應用程式。

案例 1:本機報表

假設以下條件存在,而且可以在本機電腦上使用 Crystal Report:

  • 在本機電腦的資料夾 C:\Reports 中有一份 Crystal Report (My Report.rpt)。
  • 在 Visual Basic 或 C# 專案中:
    • 您已在本端主機 https://localhost 中建立了一個 ASP.NET Web 應用程式專案,名稱為 MyProject。
    • 您已在 MyProject 的 Web Form (WebForm1.aspx) 中插入一個 Web Form Viewer,名稱為 CrystalReportViewer1
  • 在 Managed C++ 專案 MyProject 中:
    • 您已在 MyProject 的 MyProject.cpp 中插入一個 Web Form Viewer,名稱為 CrystalReportViewer1

您可以依報表名稱、報表物件或非型別式報表元件,將 My Report.rpt 繫結至 Web Form Viewer。

依報表名稱繫結

在 Visual Basic 或 C# 專案中,您可以透過 [屬性] 視窗或程式碼來指定 ReportSource 屬性:

  • 透過 [屬性] 視窗設定 DataBindings 屬性。
    1. 請在 WebForm1.aspx 的 [設計] 索引標籤中選取 Web Form Viewer。在 [屬性] 視窗中,按一下與 DataBindings 屬性相鄰的方形按鈕。在左邊窗格中,選取 [可繫結的屬性] 之下的 ReportSource。在右下角窗格中,按一下 [自訂繫結運算式] 並輸入完整的路徑名稱 "c:\\Reports\\My Report.rpt" (包含一組雙引號)。
    2. 在 WebForm1.aspx 原始程式檔中的 InitializeComponent() 呼叫之後,加入 CrystalReportViewer1.DataBind() 呼叫。
  • 或者,在 WebForm1.aspx 的 [程式碼] 檢視中指定報表路徑。

在 C++ 專案中,您可以透過程式碼來指定報表路徑。

範例

[Visual Basic]

CrystalReportViewer1.ReportSource = _
"C:\\Reports\\My Report.rpt"

[C#]

CrystalReportViewer1.ReportSource = 
"C:\\Reports\\My Report.rpt";

[C++]

CrystalReportViewer1->ReportSource =
"C:\\Reports\\My Report.rpt";

[VJ#]

CrystalReportViewer1.set_ReportSource( 
"C:\\Reports\\My Report.rpt");

依報表物件繫結

您可以建立報表物件,將報表指定給該物件,以及將物件繫結至 Web Form Viewer。您可以透過報表物件來存取 Crystal Reports for Visual Studio .NET 所顯露的整個物件模型。但是,如果您選擇使用這種繫結方法,基於效能上的緣故,請考慮快取工作階段狀態。

若要在 Visual Basic 或 C# 應用程式中將報表物件繫結至 Web Form Viewer

  1. 加入參考CrystalDecisions.CrystalReports.Engine
  2. 程式碼編輯器中開啟 WebForm1.aspx。
  3. 將 CrystalDecisions.CrystalReports.Engine 命名空間加入 WebForm1.aspx。
  4. InitializeComponent() 呼叫之後,將報表物件建立為公用 ReportDocument 變數,然後使用 ReportDocument 物件載入 My Report.rpt,並將物件繫結至 Web Form Viewer。

若要在 C++ 應用程式中將報表物件繫結至 Web Form Viewer

  1. 在方案總管中按兩下 MyProject.cpp,即可在程式碼編輯器中開啟它。
  2. 將 CrystalDecisions.CrystalReports.Engine.dll 和 CrystalDecisions.Web.dll 元件加入 MyProject.cpp。
  3. 將 CrystalDecisions.CrystalReports.Engine 和 CrystalDecisions.Web 命名空間加入 MyProject.cpp。
  4. 將報表物件建立為 ReportDocument 變數,將 Web Form Viewer 建立為 CrystalReportViewer 變數。然後使用 ReportDocument 物件載入 My Report.rpt,並將物件繫結至 Web Form Viewer。

範例

[Visual Basic]

Private Sub Page_Init _
 (ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Init
   'CODEGEN: Web Form 設計工具需要 
   '此方法呼叫
   '不要使用程式碼編輯器修改它。
   InitializeComponent()

   Dim oRpt as New ReportDocument()
   oRpt.Load("C:\\Reports\\My Report.rpt")
   CrystalReportViewer1.ReportSource = oRpt
End Sub

[C#]

override protected void OnInit(EventArgs e)
{
   // CODEGEN: ASP.NET Web Form 設計工具
   //  需要此呼叫
   InitializeComponent();

   ReportDocument oRpt = new ReportDocument();
   oRpt.Load("c:\\Reports\\My Report.rpt");   
CrystalReportViewer1.ReportSource = oRpt;
}

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

protected void OnInit(System.EventArgs e)
{
   // CODEGEN: ASP.NET Web Form 設計工具
   //  需要此呼叫
   InitializeComponent();

   ReportDocument oRpt = new ReportDocument();
   oRpt.Load("c:\\Reports\\My Report.rpt");   
   CrystalReportViewer1.set_ReportSource(oRpt);
}

依非型別式報表元件繫結

假設您已在 Web Form 中加入非型別式報表元件 reportDocument1,而且已使用 c:\Reports\My Report.rpt 載入元件

在 Visual Basic 或 C# 專案中,您可以透過 WebForm1.aspx 的 [屬性] 視窗或 [程式碼] 檢視,將非型別式報表元件繫結至 Web Form Viewer:

  • 透過 [屬性] 視窗設定 DataBindings 屬性。

    請在 WebForm1.aspx 的 [設計] 索引標籤中選取 Web Form Viewer。在 [屬性] 視窗中,選取 DataBindings 屬性。在產生的 [資料繫結] 對話方塊中,選取 [可繫結的屬性] 下的 ReportSource。執行下列其中一項:

    1. 按一下 [簡單繫結],並選取 [頁面] 之下的 reportDocument1。按一下 [確定]。
    2. 或者,按一下 [自訂繫結運算式] 並輸入 reportDocument1。按一下 [確定]。

    在 WebForm1.aspx 原始程式檔中的 InitializeComponent() 和 reportDocument1.Load() 呼叫之後,加入 CrystalReportViewer1.DataBind() 呼叫。

  • 或者,在 WebForm1.aspx 的 [程式碼] 檢視中的 InitializeComponent() 和 reportDocument1.Load() 呼叫之後指定 ReportSource 屬性。

在 C++ 應用程式中,您必須透過程式碼來加入 Web Form Viewer 和報表。

[Visual Basic]

CrystalReportViewer1.ReportSource = reportDocument1

[C#]

CrystalReportViewer1.ReportSource = reportDocument1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(reportDocument1);

案例 2:已加入至專案的本機報表

假設以下條件之一存在:

在 Visual Basic 或 C# 應用程式中

  • 您已在本端主機 https://localhost 中建立了一個 ASP.NET Web 應用程式專案,名稱為 MyProject。

  • 您已在 MyProject 的 Web Form (WebForm1.aspx) 中插入一個 Web Form Viewer,名稱為 CrystalReportViewer1。

  • 您已經加入報表 (My Report.rpt) 至 MyProject 中。

    您可以依報表物件,將 My Report.rpt 繫結至 Web Form Viewer。

    在 C++ 應用程式中

  • 您已建立了一個 Managed C++ 專案,名稱為 MyProject。

  • 您已在 MyProject 的 MyProject.cpp 中加入一個 Web Form Viewer,名稱為 CrystalReportViewer1。

依報表物件繫結

依報表物件:

在 Visual Basic 和 C# 中,當您將 My Report.rpt 加入 MyProject 時,便會在 My Report.rpt 的原始程式檔中自動產生對應的報表類別 My_Report。您可以透過 WebForm1.aspx 的 [程式碼] 檢視,將對應的報表物件指派給 ReportSource 屬性,即可將 My Report.rpt 繫結至 Web Form Viewer。

C++ 專案不會自動產生報表類別。您可以透過程式碼將報表加入 C++ 應用程式。

範例

[Visual Basic]

CrystalReportViewer1.ReportSource = new My_Report()

[C#]

CrystalReportViewer1.ReportSource = new My_Report();

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(new My_Report());

依強型別報表元件繫結

假設您已將 My Report.rpt 當成元件加入 MyProject 中。

在 Visual Basic 或 C# 應用程式中

您可以透過 WebForm1.aspx 的 [屬性] 視窗或 [程式碼] 檢視,將報表元件繫結至 Web Form Viewer:

  • 請在 WebForms1.aspx 的 [設計] 索引標籤中選取 Web Form Viewer。在 [屬性] 視窗中,選取 DataBindings 屬性。在產生的 [資料繫結] 對話方塊中,選取 [可繫結的屬性] 下的 ReportSource。執行下列其中一項:

    1. 按一下 [簡單繫結],並選取 [頁面] 之下的 my_Report1。按一下 [確定]。
    2. 或按一下 [自訂繫結運算式] 並輸入 my_Report1。按一下 [確定]。

    在 WebForm1.aspx 原始程式檔中的 InitializeComponent() 呼叫之後,加入 CrystalReportViewer1.DataBind() 呼叫。

  • 或者,透過 WebForm1.aspx 的 [程式碼] 檢視來指定 ReportSource 屬性。

    在 C++ 應用程式中

    您可以用繼承 ReportDocument 類別的方式來建立自己的報表類別,然後將報表加入至 Web Form Viewer 的 ReportSource 屬性。

範例

[Visual Basic]

CrystalReportViewer1.ReportSource = my_Report1

[C#]

CrystalReportViewer1.ReportSource = my_Report1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   MyReportClass* my_Report1;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      my_Report1= new MyReportClass();
      my_Report1->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = my_Report1;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(my_Report1);

依快取的報表元件繫結

假設您已將 My Report.rpt 當成元件加入 MyProject 中,而且已選取報表元件的快取中。

在 Visual Basic 或 C# 應用程式中

您可以透過 WebForm1.aspx 的 [屬性] 視窗或 [程式碼] 檢視,將報表元件繫結至 Web Form Viewer:

  • 請在 WebForms1.aspx 的 [設計] 索引標籤中選取 Web Form Viewer。在 [屬性] 視窗中,選取 DataBindings 屬性。在產生的 [資料繫結] 對話方塊中,選取 [可繫結的屬性] 下的 ReportSource。執行下列其中一項:

    1. 按一下 [簡單繫結],並選取 [頁面] 之下的 cachedMy_Report1。按一下 [確定]。
    2. 或按一下 [自訂繫結運算式] 並輸入 cachedMy_Report1。按一下 [確定]。
  • 透過 WebForm1.aspx 的 [程式碼] 檢視來指定 ReportSource 屬性。

    在 C++ 應用程式中

    您只能透過程式碼將報表元件加入及快取至 C++ 應用程式中。如需建立強型別報表類別的範例,請參閱 ICachedReport

範例

[Visual Basic]

CrystalReportViewer1.ReportSource = cachedMy_Report1

[C#]

CrystalReportViewer1.ReportSource = cachedMy_Report1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   MyCachedReportClass* cachedMy_Report1;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      cachedMy_Report1= new MyCachedReportClass();
      cachedMy_Report1->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = cachedMy_Report1;
   };
};

[VJ#]

CrystalReportViewer1.set_ReportSource(cachedMy_Report1);