绑定报表并把数据源设置为填充的数据集

在本节中,将学习如何实例化已经创建的报表,填充报表的数据集,以及在 CrystalReportViewer 控件中显示报表。通过将报表的 SetDataSource 属性赋给填充的数据集来填充报表,而该数据集是从 DataSetConfiguration 类的 CustomerDataSet 属性返回的。最后,将填充的报表绑定到 CrystalReportViewer 控件。

可用以下方式实例化并绑定报表:

  • 作为嵌入式报表。
  • 作为非嵌入式报表。

从下面的过程中选择一个(不要两者都选)。

实例化非嵌入式报表并将其绑定到 CrystalReportViewer 控件

  1. 打开 Web 或 Windows 窗体。

  2. 从“视图”菜单中,单击“代码”。

  3. 使用变量名 customerReport 为 ReportDocument 报表包装类添加新的类级声明。将其访问修饰符设置为 private。

<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>ReportDocument 类是 CrystalDecisions.CrystalReports.Engine 命名空间的成员。已在<a href="ms227453(v=vs.90).md">“项目设置”</a>中为此命名空间添加了 &quot;Imports&quot;[Visual Basic] 或 &quot;using&quot;[C#] 声明。在实例化 ReportDocument 并将报表加载到命名空间时,即通过 SDK 获取了对报表的访问,而不必嵌入报表。</p></td>
</tr>
</tbody>
</table>

``` vb
Private customerReport As ReportDocument
```

``` csharp
private ReportDocument customerReport;
```
  1. 在 ConfigureCrystalReports() 方法(在“项目设置”的某一过程中添加)中,实例化 ReportDocument 类。

    customerReport = New ReportDocument()
    
    customerReport = new ReportDocument();
    
  2. 声明一个字符串变量,将其命名为“reportPath”,然后将一个本地报表的运行时路径赋值给它。对于网站项目和 Windows 项目,确定此路径时会有所不同:

    • 对于网站,要将本地报表文件的名称作为字符串参数传递到 Server.MapPath() 方法中。这样,在运行时本地报表就会映射到硬盘文件目录路径。

      Dim reportPath As String = Server.MapPath("Customer.rpt")
      
      string reportPath = Server.MapPath("Customer.rpt");
      
    • 对于 Windows 项目,要将 Application.StartupPath 属性与一个反斜杠和本地报表文件名称连接起来。这样,报表将映射到与 Windows 可执行文件相同的目录。

      Note注意

      编译时,需要将报表复制到可执行文件所在的目录。

      Dim reportPath As String = Application.StartupPath & "\" &
      "Customer.rpt"
      
      string reportPath = Application.StartupPath + "\\" +
      "Customer.rpt";
      
  3. 调用 ReportDocument 实例的 Load() 方法,并将 reportPath 字符串变量传递给该方法。

``` vb
customerReport.Load(reportPath)
```

``` csharp
customerReport.Load(reportPath);
```
  1. 声明数据集并将其赋给 DataSetConfiguration.CustomerDataSet property。

    Dim myDataSet As DataSet = DataSetConfiguration.CustomerDataSet
    
    DataSet dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. 调用 customerReport ReportDocument 实例的 SetDataSource() 方法,并对其传递数据集实例。

``` vb
customerReport.SetDataSource(myDataSet)
```

``` csharp
customerReport.SetDataSource(dataSet);
```
  1. 在报表加载部分的下一行中,将 CrystalReportViewer 的 ReportSource 属性绑定到 ReportDocument 实例。

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

实例化嵌入式报表并将其绑定到 CrystalReportViewer 控件

  1. 打开 Web 或 Windows 窗体。

  2. 从“视图”菜单中,单击“代码”。

  3. 在类签名上方,在类顶部为 System.Data 命名空间添加 "Imports"[Visual Basic] 或 "using"[C#] 声明(如果尚未存在)。

``` vb
Imports System.Data
```

``` csharp
using System.Data;
```
  1. 使用变量名 customerReport 为 Customer 报表包装类添加新的类级声明。将其访问修饰符设置为 private。

    Private customerReport As Customer
    
    private Customer customerReport;
    
  2. 在 ConfigureCrystalReports() 方法中,实例化该报表包装类。

    Note注意

    已在 “项目设置” 中创建了 ConfigureCrystalReports() 方法。

    customerReport = New Customer()
    
    customerReport = new Customer();
    
  3. 在报表实例化下面的一行中,声明数据集。

此步骤和下一步将变量的声明与变量的赋值分开。每行代码都保持分开,因为在本教程的网站附录中,您将把变量赋值重构到一个代码块中,该块会缓存 ASP.NET Cache 对象中的数据集。

``` vb
Dim myDataSet As DataSet
```

``` csharp
DataSet dataSet;
```
  1. 把 DataSetConfiguration.CustomerDataSet 属性赋给数据集实例。

    myDataSet = DataSetConfiguration.CustomerDataSet
    
    dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. 调用 CustomerReport 实例的 SetDataSource() 方法,并对其传递数据集实例。

``` vb
customerReport.SetDataSource(myDataSet)
```

``` csharp
customerReport.SetDataSource(dataSet);
```
  1. 将该 CrystalReportViewer 控件的 ReportSource 属性绑定到 CustomerReport 实例。

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

测试“客户”报表及其填充的数据集的加载

现在即可生成并运行项目。

  1. 从“生成”菜单中,单击“生成解决方案”。
  2. 如果生成过程中出错,请立即纠正。
  3. 如果要在 Windows 项目中使用非嵌入式报表,请在 \bin\ [Visual Basic] 子目录或 \bin\debug\ [C#] 子目录中找到编译后的 Windows 可执行文件,然后将报表复制到该子目录。
    Note注意

    要让 Windows 可执行文件在运行时加载非嵌入式报表,该报表必须与 Windows 可执行文件存储在同一个目录中。

  4. 从“调试”菜单中,单击“开始”。
  5. 即会显示“客户”报表,并且显示在数据集中放入的填充数据。
  6. 返回到 Visual Studio,然后单击“停止”从调试模式中退出。

如果要生成 Windows 项目,则现在已经完成此教程。

如果要构建一个网站,请继续浏览“在网站中缓存数据集 ”