这次的需求是希望使用DevExpress中的相关控件制作报表,而一般来说,不管是用微软自己的rdlc报表还是DevExpress,凡是涉及到数据绑定的环节基本上都是在讲如何直接连数据库然后做databinding,而我这次不需要从数据库中获取数据,而是内存中的一个dataset类型变量给报表传递数据,具体实现方法如下:
首先新建一个DevExpress的XtraReport,设计好报表样式,试验期间,只在报表中拖放了一个XrLabel控件,默认控件名称为XrLabel1,查看XtraReport的源代码,重新一下它的构造函数,实现带参数构造:
Public Class XtraReport1
''' <summary>
''' 重新构造函数
''' </summary>
''' <param name="ds">要传进来的dataset类型对象</param>
''' <remarks></remarks>
Public Sub New(ByVal ds As DataSet)
InitializeComponent() '必备的初始化控件过程
Me.DataSource = ds '设置整个报表的数据源为传进来的ds参数
Me.XrLabel1.DataBindings.Add("Text", ds, "test") '为报表中的控件添加数据绑定
End Sub
End Class
另外再新建一个winform,拖进去一个DevExpress的DocumentViewer控件和一个button,代码如下:
Public Class printForm
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ds As New DataSet()
ds.Tables.Add("dt1")
ds.Tables("dt1").Columns.Add("test")
ds.Tables("dt1").Rows.Add({"tom"})
Dim x As New XtraReport1(ds) '把ds对象传过去
Me.DocumentViewer1.DocumentSource = x '设置DocumentViewer的文档源
x.CreateDocument() '必须过程,否则不显示报表内容
End Sub
End Class
这样运行程序点击按钮后就可以看到预期的效果:在DocumentViewer中显示出来一个"tom"的报表~