本指南演示了如何 在数据源级 筛选数据。 如果数据源包含大量数据、或者不能够在可容忍的时间期间内加载数据时,就可以使用这种方法。 如果应用程序的数据加载过程要求不高,那么请参阅 如何: 在报表级筛选数据

要在数据源级筛选数据,则执行下列操作。

  1. 启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序

  2. 添加新空白报表 到项目中。

  3. 绑定报表 到 Northwind 示例数据库 (与 XtraReports 安装一起提供的 nwind.mdb 文件) 的 "CustomerReports" 视图。

  4. 把整个 CustomerReports 表从 Field List(字段列表) 窗口中拖放到报表的 Detail(细节) 带区,从而自动创建单元格都被绑定到相应数据字段的表格控件。

  5. 选中报表,并重置它的 XtraReportBase.DataAdapter 属性。

  6. 创建两个参数,并把它们的 Parameter.Type 属性都设置为 DateTime

  7. 在底部的组件面板中,使用鼠标右键单击 customerReportsTableAdapter 项,并在被调用的菜单中,选择 Edit Queries in DataSet Designer(在数据集设计器中编辑查询)... 菜单项。

  8. 在数据集设计器中,选中 CustomerReportsTableAdapter,在 属性 窗口中展开 SelectCommand 部分,找到 CommandText 属性并单击它的省略号按钮。

  9. Query Builder(查询生成器) 将出现。

    在此对话框中,添加下列行到已有的 SQL 查询: WHERE (OrderDate > ?) AND (OrderDate < ?),并单击 确定 按钮。

    这样将自动创建被赋值为报表参数的查询参数。

  10. 最后,以下列方式接管报表的 BeforePrint 事件。

    C#CopyCode image复制代码
    using System;
    using DevExpress.XtraReports.UI;
    using System.Drawing.Printing;
    // ...
    
    private void XtraReport1_BeforePrint(object sender, PrintEventArgs e) {
        customerReportsTableAdapter.Fill(nwindDataSet1.CustomerReports, 
        (DateTime)parameter1.Value, (DateTime)parameter2.Value);
    }
    
    Visual BasicCopyCode image复制代码
    Imports System
    Imports DevExpress.XtraReports.UI
    Imports System.Drawing.Printing
    ' ...
    
    Private Sub XtraReport1_BeforePrint(ByVal sender As Object, ByVal e As PrintEventArgs) _
    Handles MyBase.BeforePrint
        customerReportsTableAdapter.Fill(nwindDataSet1.CustomerReports, CDate(parameter1.Value), _ 
        CDate(parameter2.Value))
    End Sub
    

现在报表已经就绪。 运行打印预览窗体,并查看结果。

Expand image参阅