本指南演示了如何使用 System.Windows.Forms.BindingSource 组件,把报表绑定到仅在运行时刻可用的数据。 当不能在设计时刻获取报表的数据源对象、但是想在设计时刻调整所有报表控件的绑定时,可以使用这种方法。
注意,不能正确序列化绑定源的内容。 但如果数据源类型是 System.Data.Dataset 对象,那么就不存在此限制,并且还可以使用在 如何: 在设计时刻把报表绑定到数据集并且在运行时刻提供数据 主题中显示的另一种方法。
Show Me |
---|
在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E2049。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。 |
要在设计时刻把报表绑定到数据、而不使用数据源,则执行下列操作。
-
启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序。
-
添加新空白报表 到项目中。
-
使用下列代码把一个新类 (命名为 Data.cs) 添加到应用程序中。
C# 复制代码 using System; // ... namespace WindowsApplication35 { class Data { public Data() { } private int _id; private string _name; private DateTime _date; public int Id { get { return this._id; } set { this._id = value; } } public string Name { get { return this._name; } set { this._name = value; } } public DateTime Date { get { return this._date; } set { this._date = value; } } } }
Visual Basic 复制代码 Imports System ' ... Namespace WindowsApplication35 Friend Class Data Public Sub New() End Sub Private _id As Integer Private _name As String Private _date As DateTime Public Property Id() As Integer Get Return Me._id End Get Set(ByVal value As Integer) Me._id = value End Set End Property Public Property Name() As String Get Return Me._name End Get Set(ByVal value As String) Me._name = value End Set End Property Public Property [Date]() As DateTime Get Return Me._date End Get Set(ByVal value As DateTime) Me._date = value End Set End Property End Class End Namespace
-
从 数据 工具箱标签页中把 System.Windows.Forms.BindingSource 组件拖放到报表中。
在此步骤之后,报表的 XtraReportBase.DataSource 属性被自动设置为 bindingSource1。
-
然后在组件的底部面板中,选中 bindingSource1 组件,并把它的 DataSource 属性设置为 Data 类型。
-
把所需的字段从 Field List(字段列表) 拖放到报表中。
-
最后,接管 Form1_Load 事件来装载并指派报表的数据源。
C# 复制代码 using System; using System.Windows.Forms; using System.Collections.Generic; // ... private void Form1_Load(object sender, EventArgs e) { XtraReport1 report = new XtraReport1(); report.DataSource = CreateData(); report.ShowPreview(); } private List<Data> CreateData() { List<Data> data = new List<Data>(); Data item1 = new Data(); item1.Date = DateTime.Now; item1.Id = 0; item1.Name = "First"; data.Add(item1); Data item2 = new Data(); item2.Date = DateTime.Now; item2.Id = 1; item2.Name = "Second"; data.Add(item2); Data item3 = new Data(); item3.Date = DateTime.Now; item3.Id = 2; item3.Name = "Third"; data.Add(item3); return data; }
Visual Basic 复制代码 Imports System Imports System.Windows.Forms Imports System.Collections.Generic ' ... Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load Dim report As New XtraReport1() report.DataSource = CreateData() report.ShowPreview() End Sub Private Function CreateData() As List(Of Data) Dim data As New List(Of Data)() Dim item1 As New Data() item1.Date = DateTime.Now item1.Id = 0 item1.Name = "First" data.Add(item1) Dim item2 As New Data() item2.Date = DateTime.Now item2.Id = 1 item2.Name = "Second" data.Add(item2) Dim item3 As New Data() item3.Date = DateTime.Now item3.Id = 2 item3.Name = "Third" data.Add(item3) Return data End Function
运行此应用程序,并查看结果。