本指南演示了如何使用 System.Windows.Forms.BindingSource 组件,把报表绑定到仅在运行时刻可用的数据。 当不能在设计时刻获取报表的数据源对象、但是想在设计时刻调整所有报表控件的绑定时,可以使用这种方法。

注意,不能正确序列化绑定源的内容。 但如果数据源类型是 System.Data.Dataset 对象,那么就不存在此限制,并且还可以使用在 如何: 在设计时刻把报表绑定到数据集并且在运行时刻提供数据 主题中显示的另一种方法。

CodeCentralShow Me

在 DevExpress Code Central 数据库中可以找到完整的示例项目,网址是 http://www.devexpress.com/example=E2049。 取决于目标平台类型 (ASP.NET、WinForms 等),可以在线运行本示例,或者下载自动可执行的示例。

要在设计时刻把报表绑定到数据、而不使用数据源,则执行下列操作。

  1. 启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序

  2. 添加新空白报表 到项目中。

  3. 使用下列代码把一个新类 (命名为 Data.cs) 添加到应用程序中。
    C#CopyCode image复制代码
    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 BasicCopyCode image复制代码
    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
    
  4. 数据 工具箱标签页中把 System.Windows.Forms.BindingSource 组件拖放到报表中。

    在此步骤之后,报表的 XtraReportBase.DataSource 属性被自动设置为 bindingSource1

  5. 然后在组件的底部面板中,选中 bindingSource1 组件,并把它的 DataSource 属性设置为 Data 类型。

  6. 把所需的字段从 Field List(字段列表) 拖放到报表中。

  7. 最后,接管 Form1_Load 事件来装载并指派报表的数据源。
    C#CopyCode image复制代码
    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 BasicCopyCode image复制代码
    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
    

运行此应用程序,并查看结果。

Expand image参阅