本指南描述了创建有参数 的 Web 报表的步骤。 在本例中,我们使用 ASPxComboBox 控件来把参数传递到报表。 但是,在真实的 Web 应用程序中,可以使用多种其他方式来传递参数。
要创建有参数的 Web 报表,则执行下列操作。
创建 Web 应用程序
-
启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 ASP.NET Web 应用程序。
-
单击设计面板底部的 设计 标签,以切换到设计模式,然后把 ReportToolbar 和 ReportViewer 控件从 DX.10.2: Reporting 工具箱标签页中拖放到网页页面上。
-
为了相互链接控件,把 ReportToolbar1 的 ReportToolbar.ReportViewer 属性设置为 ReportViewer1。
-
把 ASPxComboBox 控件从 DX.10.2: Common Controls 工具栏标签页中拖放到 Default.aspx 页面上。 它将被用于把参数传递到报表。
-
选中所创建的 ASPxComboBox 控件,然后在“属性网格”中,找到 Items 属性并单击它的省略号按钮,来调用 Editor Form 对话框。
在此对话框中,创建与 nwind.mdb 示例数据库的 "Categories" 表中一致的项,并单击 OK 按钮。
注意 注意,出于简化目的,在本例中我们人工添加了要作为参数传递到报表的项。 但是,在真实的应用程序中,可以动态装载组合框列表项。
-
此外,把 ASPxComboBox 控件的 AutoPostBack 属性设置为 True、并把 SelectedIndex 属性设置为 0。
创建报表
-
绑定报表 到 Northwind 示例数据库 (nwind.mdb文件,在 XtraReports 安装中已提供) 中的 "Products" 表。
-
为了新建一个 带区,使用鼠标右键单击报表的 Detail(细节) 带区,然后在被调用的菜单中,指向 Insert Band(插入带区) 项,并单击 GroupHeader 子菜单项。
然后,从 Field List(字段列表) 窗口中,把 CategoryID 字段拖放到新建的带区中,以便于显示在组合框中选中的产品类别。
-
把 ProductName 和 UnitPrice 字段拖放到报表的 Detail(细节) 带区。
-
为了把参数添加到报表中,在 Field List(字段窗口) 中,使用鼠标右键单击 Parameters 部分,并选择 Add Parameter(添加参数) 菜单项。
-
使用“属性网格”,把它的 Parameter.Name 属性设置为 catId、把 Modifiers 属性设置为 Public 并且把 Parameter.Type 属性设置为 Int32。
-
单击报表的 智能标记,并在被调用的操作列表中,单击 XtraReportBase.FilterString 属性的省略号按钮。
FilterString Editor 将出现,允许指定需要的涉及所创建参数的表达式。
注意 注意,尽管可以使用筛选字符串来筛选报表数据,但是也可能要 在数据源级筛选数据。
-
另外,切换到 Default.aspx 页面的设计模式,并且双击页面空白区上的任何位置,以便于添加下列代码。
C# 复制代码 using System; using DevExpress.XtraReports.UI; // ... protected void Page_Load(object sender, EventArgs e) { ReportViewer1.Report = CreateReport(); } XtraReport CreateReport() { XtraReport1 report = new XtraReport1(); report.catId.Value = GetSelectedValue(1); report.CreateDocument(); return report; } int GetSelectedValue(int defaultValue) { if(ASPxComboBox1.SelectedItem != null) { return Convert.ToInt32(ASPxComboBox1.SelectedItem.Value) + 1; } else { return defaultValue; } }
Visual Basic 复制代码 Imports System Imports DevExpress.XtraReports.UI ' ... Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load ReportViewer1.Report = CreateReport() End Sub Private Function CreateReport() As XtraReport Dim report As New XtraReport1() report.catId.Value = GetSelectedValue(1) report.CreateDocument() Return report End Function Private Function GetSelectedValue(ByVal defaultValue As Integer) As Integer If ASPxComboBox1.SelectedItem IsNot Nothing Then Return Convert.ToInt32(ASPxComboBox1.SelectedItem.Value) + 1 Else Return defaultValue End If End Function
查看运行结果
现在有参数的 Web 报表已经就绪。 运行应用程序,并查看结果。