避免混用对象模型
不要将 CrystalReportViewer 对象模型与其它对象模型混用。
如果用一个简单的路径字符串将 CrystalReportViewer 控件直接绑定到报表,可以将该控件作为一种受限对象模型使用。
但如果将报表封装到另外一种对象模型中(例如,ReportDocument 或 ReportClientDocument),然后将该控件绑定到该对象模型,应立即停止使用 CrystalReportViewer 对象模型。CrystalReportViewer 控件提供的有限模型对于它所绑定到的更强大的对象模型来说是多余的。此外,如果应用到 CrystalReportViewer 对象模型的设置对于其它对象模型是可见的,则可能会导致意外行为和异常。
例如,您可能会使用 ReportDocument 对象模型从服务器导出或打印每月报表。如果已经使用 CrystalReportViewer 对象模型在该报表上设置了月份参数,则可能会遇到问题。ReportDocument 对象模型看不到在 CrystalReportViewer 对象模型中应用的参数设置。它将在不知道该月份参数设置的情况下尝试导出或打印报表,然后显示错误的月份,或者甚至会引发异常。
最好的解决办法是,在 CrystalReportViewer 控件已绑定到一个基础对象模型时,只使用该控件修改报表显示设置。