我使用crystal report在我的c#windows应用程序中实现报告。我创建一个表单来显示Report的打印预览。我使用以下代码来显示预览:
private ReportDocument _reportDocument;
public CrystalReportPrintPreviewForm(ReportDocument reportDocument)
{
InitializeComponent();
_reportDocument = reportDocument;
}
private void CrystalReportPrintPreviewForm_Load(object sender, EventArgs e)
{
if(_reportDocument!=null)
crystalReportViewer1.ReportSource = _reportDocument;
}
我还使用以下代码将“ReportDocument”发送到此表单并显示它:
ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(Application.StartupPath + "\\Reports\\WorkGroupReport.rpt");
kargarBandarDataset.WorkGroup.DefaultView.RowFilter = workGroupBindingSource.Filter;
reportDocument.SetDataSource(kargarBandarDataset.WorkGroup.DefaultView.ToTable());
reportDocument.SetParameterValue("CurrentDate",shamsi.ShamsiDate());
CrystalReportPrintPreviewForm crystalReportPrintPreview = new CrystalReportPrintPreviewForm(reportDocument);
crystalReportPrintPreview.ShowDialog();
有时我会在以下代码行中收到NullReferenceException错误消息:
crystalReportPrintPreview.ShowDialog();
我如何解决这个问题?
答案 0 :(得分:1)
没有关于如何处理NullReferenceException的确切答案。确保你在VS(Debug->异常标记公共语言运行时)中启用了“延伸”预测,找到了被投掷的地方,并试图找出原因。
另外,尝试从Exception的.Message属性中获取更多信息。
通常由提交给类的方法或构造函数的一些空参数引起的NullReference。尝试调试并查看传递给抛出异常的对象的内容;
答案 1 :(得分:0)
你确定已经创建了crytsalReportPrintPreview吗?如果该行
crystalReportPrintPreview.ShowDialog();
是实际抛出错误的行,NullReference异常似乎表明crystalReportPrintPreview为null。
要检查的另一件事是reportDocument是否为null - 可能由于某种原因DataSource为null。我将以下内容添加到您的代码中:
if (reportDocument == null)
{
throw new Exception("reportDocument is null!");
}
else
{
// put your CrsytalReportPrintPreviewForm code here
}
答案 2 :(得分:0)
与第一步一样,我建议您确保在VS中启用了例外处理。
手上没有电脑,但必须是:
调试 - >例外
出现diaolog,您可以在其中查看您感兴趣的例外情况。 如果这不起作用,您可以尝试@Marlyn
建议的方式希望这有帮助。
答案 3 :(得分:0)
我怀疑你的参数代码:
reportDocument.SetParameterValue("CurrentDate",shamsi.ShamsiDate);
如果参数对应于没有数据的日期,那么这可能是您的空来源。