演练:在本地处理模式下将数据库数据源与 ReportViewer Web 服务器控件一起使用

本演练演示如何为 Microsoft Visual Studio 2008 ASP.NET 网站创建报表,以及如何向网页中添加 ReportViewer 控件,以便用户可以查看该报表。

系统必备

若要使用本演练,您必须有权访问 AdventureWorks 示例数据库。有关更多信息,请参见演练:安装 AdventureWorks 数据库

您还必须对运行 Microsoft Internet Information Services (IIS) 5.0 版或更高版本的服务器具有访问权限,并具有创建 ASP.NET 网页的权限。

通过在计算机上执行下列步骤,可以使用 Visual Studio 2008 模板创建包含 ReportViewer 控件的 ASP.NET 网页,并将该控件配置为能用于查看所创建的报表。对于本示例,在 Microsoft Visual Basic 中创建应用程序。

创建新的网站

  1. 在**“文件”菜单中,指向“新建”,选择“网站”**。

  2. 在“新建网站”对话框中,选择**“ASP.NET 网站”**。

  3. 在**“语言”列表中,选择 Visual Basic,再单击“确定”**。

  4. 在**“位置”框中,选择“HTTP”(如果尚未选择),然后单击“浏览”**定位至新文件夹。

  5. 在**“选择位置”对话框中,单击“本地 IIS”**,然后定位至网站的根目录。

  6. 单击“创建新 Web 应用程序”按钮以创建一个新文件夹,然后键入名称。按 Enter。

  7. 单击**“打开”**。

  8. 单击**“确定”**。

    随即将打开该网站项目,并显示**“Default.aspx”**网页。

  9. 在解决方案资源管理器中,检查是否已突出显示**“Default.aspx”**。

  10. 在**“查看”菜单上,选择“设计器”**。

    现在您就可以修改网站的默认页。

通过添加数据集来定义数据连接和 DataTable

  1. 在**“网站”菜单上选择“添加新项”**。

  2. 在**“添加新项”对话框中,单击“数据集”。单击“添加”。在系统提示是否要将该项添加到“App_Code”文件夹中时,请单击“是”。这会向项目中添加一个新的 XSD 文件“DataSet1.xsd”,同时打开数据集设计器,并调用“TableAdapter 配置向导”**。

  3. 在**“选择您的数据连接”页上,如果 AdventureWorks 是使用 SQLExpress 安装的,则可能会显示可供选择的现有数据连接“sqlexpress.AdventureWorks.dbo”,这时请跳到步骤 6。否则,请单击“新建连接”**。

  4. 在**“数据源”对话框中,选择“Microsoft SQL Server (Sql 客户端)”**。

  5. 在**“服务器名称”对话框中,输入 AdventureWorks 示例数据库所在的服务器的名称。例如,SQL Server Express 的默认实例名称为“(local)\sqlexpress”。输入服务器名称后,请从数据库下拉列表中选择“AdventureWorks”,然后单击“确定”**。

  6. 单击**“下一步”**。

  7. 在**“将连接字符串保存到应用程序配置文件中”页上,为连接字符串键入名称或接受默认的“AdventureWorksConnectionString”。单击“下一步”**。

  8. 在**“选择命令类型”页上,选择“使用 SQL 语句”**。确认未选择其他单选按钮。

  9. 在**“输入 SQL 语句”页上,输入以下 Transact-SQL 查询以从 AdventureWorks 数据库中检索数据,然后单击“完成”。您也可以单击“查询生成器”按钮,然后使用“查询生成器”创建查询,并使用“执行查询”**按钮对其进行检查。

    SELECT d.Name as Dept, s.Name as Shift, e.EmployeeID as EmployeeID
    FROM (HumanResources.Department d
    INNER JOIN HumanResources.EmployeeDepartmentHistory e
        ON d.DepartmentID = e.DepartmentID)
    INNER JOIN HumanResources.Shift s
        ON e.ShiftID = s.ShiftID
    

    如果查询未返回所需的数据,则说明您可能正在使用 AdventureWorks 的早期版本。有关安装 AdventureWorks 的 SQL Server 2005 版本的更多信息,请参见演练:安装 AdventureWorks 数据库

  10. 在**“选择要生成的方法”页上,接受默认值“填充 DataTable”“方法名称”“Fill”)和“返回 DataTable”“方法名称”“GetData”)。单击“下一步”**。

  11. 在**“向导结果”页上,单击“完成”**。

    现在已完成将 ADO.NET DataTable 配置为报表的数据源。

  12. 在 Visual Studio 的“数据集设计器”页上,应看到添加的 DataTable(默认名称为 DataTable1),其中列出了从查询定义得到的列。您可以从**“数据”菜单中选择“预览数据”,然后单击“预览”**按钮来检查查询结果。

设计报表

  1. 在**“网站”菜单上,选择“添加新项”**。

  2. 在**“添加新项”对话框中,选择“报表”模板,输入报表文件的名称,再单击“添加”。这将创建报表定义文件(默认为“Report.rdlc”),启动报表设计器,并显示“网站数据源”**窗格。

  3. 打开**“工具箱”**。单击工具箱,然后单击报表设计图面。

  4. 在文本框中输入报表标题:“每个部门每次换班的雇员数”。接着根据需要展开文本框。

  5. 从**“工具箱”中将“矩阵”**报表项拖动到文本框下的报表上。虚线白色背景是您的报表页。若要调整矩阵在页面上的位置,请单击左角以将其选中,然后根据需要通过拖动或箭头键移动项目。

  6. 在**“网站数据源”窗口中,展开“DataTable1”节点,直至看到查询所得到的列。将“Dept”拖动到矩阵第一列第二行的“行”**文本框上。

  7. 将**“Shift”拖动到矩阵第二列第一行的“列”文本框上。让该文本框处于选中状态,然后在“属性”窗口中将“TextAlign”属性设置为“右”。在文本框内单击,以激活“报表格式”工具栏,然后单击“加粗”**按钮。

  8. 单击矩阵中的任意位置,以选择矩阵。单击右键,然后按名称选择矩阵(默认值为 matrix1)。矩阵报表项周围将显示一个轮廓。右击该轮廓,然后选择**“属性”。检查所打开的对话框的标题是否为“矩阵属性”**。

  9. 单击**“组”选项卡。在“列”部分中,单击“编辑”**。

  10. 在**“排序与分组”对话框中,单击“排序”**选项卡。

  11. 在“表达式”下的第一个框内单击,以激活文本框。从下拉列表中选择**“=Fields!Dept.Value”。这样可以确保按照部门名称对报表数据进行排序。单击“确定”**。

  12. 单击**“确定”关闭“矩阵属性”**对话框。

  13. 从**“网站数据源”窗口中,将“EmployeeID”字段拖动到矩阵第二列第二行的“数据”文本框上。右击此文本框,然后选择“表达式”**。

  14. 编辑默认的**“Sum”聚合函数并将它更改为“Count”。单击“确定”**。

  15. 单击**“确定”关闭“文本框属性”**对话框。

  16. 在**“文件”菜单上,选择“全部保存”**。

向应用程序添加 ReportViewer 控件

  1. 在**“解决方案资源管理器”中,右击“Default.aspx”,然后选择“视图设计器”**。

  2. 打开**“工具箱”窗口。在“数据”组中将“ReportViewer”**控件拖动到页面上。

  3. 如果尚未打开**“ReportViewer 任务”智能标记面板,请将其打开,方法是在网页上单击 ReportViewer 控件右上角的三角形。在“选择报表”**框中,选择 Report.rdlc 的完全限定文件名。

    选择报表后,将自动创建报表中使用的数据源的实例。并生成代码以实例化每个 DataTable(及其 DataSet 容器)以及与报表中使用的每个数据源相对应的 ObjectDataSource 控件。此数据源控件自动进行配置。

Note注意

若要了解为什么 ASP.NET 使用 ObjectDataSource 控件而不使用 SqlDataSource 控件(即使基础数据源可能是数据库或某些其他强类型化的数据存储),请参见为报表创建数据源

编译和运行应用程序

  1. 按**“Ctrl+F5”可在不调试的情况下运行页面,按“F5”**则会在运行页面时进行调试。

    在生成过程中,会编译报表并将发现的所有错误(例如报表中所用的表达式中的语法错误)都添加到**“任务列表”**中。

    网页显示在浏览器中。ReportViewer 控件显示报表。可以使用工具栏浏览报表、缩放及导出到 Excel。

  2. 关闭浏览器。

另请参见

参考

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

概念

使用“ReportViewer 任务”智能标记面板

其他资源

示例和演练