Vb.net 帮助从CrystalReportViewer中分离CrystalReport

Vb.net 帮助从CrystalReportViewer中分离CrystalReport,vb.net,visual-studio-2005,crystal-reports,decoupling,Vb.net,Visual Studio 2005,Crystal Reports,Decoupling,我正在使用Visual Studio 2005和VB.NET 我有许多Crystal报表,每个报表都有自己的关联对话框资源,其中包含CrystalReportViewer。类定义如下所示: Imports System.Windows.Forms Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Public Class dlgForMyReport Private theRe

我正在使用Visual Studio 2005和VB.NET

我有许多Crystal报表,每个报表都有自己的关联对话框资源,其中包含CrystalReportViewer。类定义如下所示:

Imports System.Windows.Forms
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

Public Class dlgForMyReport

    Private theReport As New myCrystalReport
    Public theItems As New List(Of MyItem)

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Private Sub dlgForMyReport_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        theReport.SetDataSource(theItems)

        'Do a bunch of stuff here to set data items in theReport

        Me.myCrystalReportViewer.ReportSource = theReport
    End Sub

End Class
我基本上实例化了这个对话框,将其设置为我想要的列表,然后调用ShowDialog

我现在需要将这些报告中的几个合并到一个报告()中,但是加载报告中字段的代码在对话框中

如何将报表初始化与对话框分离


谢谢

您可以很容易地创建一个通用的报表查看对话框,该对话框采用报表基类的实例(即
CrystalReport
)并让它显示出来—您不需要一直强式键入报表。

您可以很容易地拥有一个通用报表查看对话框,该对话框采用报表的基类实例(即
CrystalReport
)并让它显示出来—您不需要一直强式键入报告。

谢谢Rowland。如果我理解正确,那么我只需在别处加载报表数据,设置并绑定CrystalReport对象,然后显示对话框?@John正是这样。实际上,您需要更改代码,以便将报告作为CrystalReport类型的属性公开,然后您可以将其设置为新的
myCrystalReport
,并显示对话框或任何其他CrystalReport对象。谢谢谢谢罗兰。如果我理解正确,那么我只需在别处加载报表数据,设置并绑定CrystalReport对象,然后显示对话框?@John正是这样。实际上,您需要更改代码,以便将报告作为CrystalReport类型的属性公开,然后您可以将其设置为新的
myCrystalReport
,并显示对话框或任何其他CrystalReport对象。谢谢