此演练将显示如何在 Microsoft Visual Studio 2005 Windows 应用程序中的报表中通过业务对象使用对象数据源。有关业务对象和对象数据源的详细信息,请参阅>Binding to Business Objects。
执行下列步骤,将报表添加至 Visual Studio Windows 应用程序项目。在此示例中,您将使用 Microsoft Visual C# 创建应用程序。
-
创建一个新的 Windows 应用程序项目。
-
创建用作数据源的业务对象。
-
向项目添加报表。
-
使用数据源配置向导创建数据源。
-
设计报表。
-
向报表添加 ReportViewer 控件。
-
为 BindingSource 对象提供数据源实例。
-
运行此应用程序。
-
在“文件”菜单上,指向“新建”,然后选择“项目”。
-
在“新建项目”对话框中的“Visual C#”下,选择 Windows 应用程序模板。
-
键入项目的名称 BusinessObject,并单击“确定”。
-
从“项目”菜单中,选择“添加新项”。
-
在“添加新项”对话框中,选择“类”,键入文件名 BusinessObjects.cs,并单击“添加”。新文件将添加到项目并且在 Visual Studio 中自动打开。
-
使用下列代码替换 BusinessObjects.cs 的默认代码:
using System;
using System.Collections.Generic;
// Define the Business Object "Product" with two public properties
// of simple datatypes.
public class Product {
private string m_name;
private int m_price;
public Product(string name, int price) {
m_name = name;
m_price = price;
}
public string Name {
get {
return m_name;
}
}
public int Price {
get {
return m_price;
}
}
}
// Define Business Object "Merchant" that provides a
// GetProducts method that returns a collection of
// Product objects.
public class Merchant {
private List<Product> m_products;
public Merchant() {
m_products = new List<Product>();
m_products.Add(new Product("Pen", 25));
m_products.Add(new Product("Pencil", 30));
m_products.Add(new Product("Notebook", 15));
}
public List<Product> GetProducts() {
return m_products;
}
}
-
从“项目”菜单中,选择“生成解决方案”。这将为对象创建一个程序集,您稍后会将此程序集用作报表的数据源。
-
确保在解决方案资源管理器中选中该项目或项目项。
-
从“项目”菜单,选择“添加新项”。
-
在“添加新项”对话框中,选择“报表”。为报表键入名称,并单击“添加”。报表将添加到项目并自动在报表设计器中打开。默认情况下,报表名称为 Report1.rdlc。
-
确保在解决方案资源管理器中选中该项目或项目项。
-
从“数据”菜单中,选择“添加新数据源”。这将启动数据源配置向导。
-
在“选择数据源类型”页上,选择“对象”,并单击“下一步”。
-
数据源配置向导将显示项目中现有类的列表。在 BusinessObjects 下展开类的层次结构,直到在列表中看到 Product。选择 Product,单击“下一步”,然后单击“完成”。
向导关闭后,新数据源对象将出现在“数据源”窗口中。
-
当报表在“设计”模式下处于打开状态时,打开“工具箱”。从“工具箱”中,将 Table 控件拖到报表上。表控件将显示在报表的设计视图窗口内。请注意,虚点背景表示表体和表控件的维度可调整或重新定位。
-
从“数据源”窗口中,将 Name 字段从 Product 数据源拖到表的 Detail 行的第一列。Detail 行是中间行。请注意,在指定 Detail 行时,标题行将自动填充。
注意 |
|---|
| 如果看不到“数据源”窗口,则从“数据”菜单中选择“显示数据源”。 |
-
将 Price 字段拖动到第二列的 Detail 行,使它与 Name 字段相邻。或者,通过单击左表标题图标选择表的标题行并应用粗体字形。
-
删除未使用的第三列。单击第三列,然后在标题栏上单击,并按下 Delete 键。
-
若要为报表添加标题,请打开“工具箱”将 Textbox 控件拖到报表上。在表上定位 Textbox 控件。键入报表名称 Products。还可以改变文本的字号和字形,来突出显示标题。
-
从“设计”视图中选择自动生成的 Windows 应用程序。默认情况下,窗体名称是 Form1.cs。
-
打开工具箱。在工具箱中,展开 Data 节点,并将 ReportViewer 图标拖到窗体中。展开该窗体,并按需要重新定位 ReportViewer。
-
选择 ReportViewer 控件,单击右上角的三角形打开智能标记面板。单击“选择报表”下拉列表,并选择刚才设计的报表。默认情况下,名称为 Report1.rdlc。请注意,将为相应的报表中使用的每个对象数据源自动创建 BindingSource。
为 BindingSource 对象提供数据源实例
-
右键单击 Visual Studio 窗体,并从快捷菜单选择“查看代码”。
-
在 Form1.cs 中,将下列代码添加到类的顶部。可以在 public partial class Form1 : Form { 语句后构造函数之前使用第一行。
// Instantiate the Merchant class.
private Merchant m_merchant = new Merchant();
-
在 Form1_Load() 方法中,在 RefreshReport 调用前添加下列代码作为第一行:
// Bind the Product collection to the DataSource.
this.ProductBindingSource.DataSource = m_merchant.GetProducts();
参考信息
Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing
概念
使用“ReportViewer 任务”智能标记面板
其他资源
示例和演练