尽管通常为报表提供的数据已经被存储在某些物理数据库 (SQL、MDB 等) 中,但是有时候需要把报表绑定到记录列表。 这可能是必需的,例如,在多层应用程序中,其中数据层与表现层分开,只能把报表绑定到某些 .NET 对象。
本文档描述了把 XtraReports 绑定到列表的原则。 要学习关于其他数据绑定方法的内容,请参阅 提供数据 文档。
这种数据绑定模式要求报表的 XtraReportBase.DataSource 属性接受一个拥有“记录”列表的对象。 每条“记录”都是一个对象,其公共属性被视为记录的字段,其属性值则是字段值。 需要遵照下列步骤,来为报表对象提供在运行时刻创建的数据:
-
声明一个类,它的实例将呈现记录。 该类的公共属性被作为字段处理。
-
声明一个实现了 IList、ITypedList 或 IBindingList 接口的类。 该类将提供一个用作报表数据源的列表。 此列表的元素必须是记录对象。
注意 对于 XtraReports,在 IList、ITypedList 和 IBindingList 接口之间没有重大的区别。 此外,如果不想创建自己的列表对象,那么可以使用任一种已有的实现了这些接口的对象。 例如,ArrayList 对象可以作为报表的数据源,因此本步骤是可选的。
-
新建一个列表实例,并使用记录填充它。
-
把该列表指派到报表的 XtraReportBase.DataSource 属性。
下面的插图说明了所描述的数据绑定机制。
注意,不能在设计时刻把报表绑定到列表,并且所有工作都应该以程序方式完成,但是在设计时刻仍然可以构建报表并且 把报表控件绑定到数据。 要这样做,则需要创建列表的一个数据源架构,并把它指派到报表的 XtraReport.DataSourceSchema 属性 (要获得更多关于这种方法的信息,请参阅 在设计时刻把报表绑定到数据,而不使用数据源)。 或者使用 BindingSource 组件,并把所需的对象类型指定作为其 DataSource。 然后,在运行时刻把已填充的列表指派到 XtraReportBase.DataSource 属性。