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
。
- 您已在 MyProject 的 MyProject.cpp 中插入一個 Web Form Viewer,名稱為
您可以依報表名稱、報表物件或非型別式報表元件,將 My Report.rpt 繫結至 Web Form Viewer。
依報表名稱繫結
在 Visual Basic 或 C# 專案中,您可以透過 [屬性] 視窗或程式碼來指定 ReportSource 屬性:
- 透過 [屬性] 視窗設定 DataBindings 屬性。
- 請在 WebForm1.aspx 的 [設計] 索引標籤中選取 Web Form Viewer。在 [屬性] 視窗中,按一下與 DataBindings 屬性相鄰的方形按鈕。在左邊窗格中,選取 [可繫結的屬性] 之下的 ReportSource。在右下角窗格中,按一下 [自訂繫結運算式] 並輸入完整的路徑名稱 "c:\\Reports\\My Report.rpt" (包含一組雙引號)。
- 在 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
- 加入參考至 CrystalDecisions.CrystalReports.Engine。
- 在程式碼編輯器中開啟 WebForm1.aspx。
- 將 CrystalDecisions.CrystalReports.Engine 命名空間加入 WebForm1.aspx。
- 在
InitializeComponent()
呼叫之後,將報表物件建立為公用 ReportDocument 變數,然後使用 ReportDocument 物件載入 My Report.rpt,並將物件繫結至 Web Form Viewer。
若要在 C++ 應用程式中將報表物件繫結至 Web Form Viewer
- 在方案總管中按兩下 MyProject.cpp,即可在程式碼編輯器中開啟它。
- 將 CrystalDecisions.CrystalReports.Engine.dll 和 CrystalDecisions.Web.dll 元件加入 MyProject.cpp。
- 將 CrystalDecisions.CrystalReports.Engine 和 CrystalDecisions.Web 命名空間加入 MyProject.cpp。
- 將報表物件建立為 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。執行下列其中一項:
- 按一下 [簡單繫結],並選取 [頁面] 之下的 reportDocument1。按一下 [確定]。
- 或者,按一下 [自訂繫結運算式] 並輸入 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。執行下列其中一項:
- 按一下 [簡單繫結],並選取 [頁面] 之下的 my_Report1。按一下 [確定]。
- 或按一下 [自訂繫結運算式] 並輸入 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。執行下列其中一項:
- 按一下 [簡單繫結],並選取 [頁面] 之下的 cachedMy_Report1。按一下 [確定]。
- 或按一下 [自訂繫結運算式] 並輸入 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);