如何在Crystal Reports VS2010中的不同页面上获取不同的图像

时间:2012-12-12 16:21:13

标签: wpf image crystal-reports

使用WPF CrystalReportsViewer和CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument我可以通过在相应的部分调用ImportPicture来动态地将图像添加到rpt中的所有页面。但是,我想为每个页面添加不同的图像。

我已经知道有多少页需要图像(请参阅How do I get the number of rendered pages from a CrystalReportsViewer?),但无法在每页上获得不同的图像。

我可以访问“已呈现”报告的数据模型吗?我可以在每页添加不同的图像吗?

2 个答案:

答案 0 :(得分:1)

我不确定在VS中以编程方式执行此操作,但您可以在Crystal Report本身中执行此操作。

  1. 将占位符图片放在所需的部分,位置。
  2. 右键点击图片 - >转到“格式图形” - >选择“图片”标签
  3. 您应该会看到一个按钮,可以让您输入“图形位置”的公式
  4. 使用公式通过“pagenumber”关键字解析为有效的图像文件路径:
  5. select pagenumber
    case 1 : "C:\picture1.bmp"
    case 2 : "C:\picture2.bmp"
    ...
    default : "C:\warning.bmp"

答案 1 :(得分:1)

将所有图像添加到所需的部分,然后将EnableSuppress设置为隐藏,当它不在所需的页面上时隐藏。

CrystalDecisions.ReportAppServer.ReportDefModel.PictureObject pic=ctl.ReportObjectController.ImportPicture(tempImagePath, s, 0, 0);
                        if (pic != null)
                        {
                            var picNew = pic.Clone();
                            picNew.Format.EnableSuppress = true;
                            CrystalDecisions.ReportAppServer.ReportDefModel.ConditionFormula f = roNew.Format.ConditionFormulas[CrObjectFormatConditionFormulaTypeEnum.crObjectFormatConditionFormulaTypeEnableSuppress];
                            if (f != null)
                            {
                                f.Syntax = CrFormulaSyntaxEnum.crFormulaSyntaxCrystal;
                                f.Text = string.Format("PageNumber <> {0}", ri.PageNumber);

                            }
                            ctl.ReportObjectController.Modify(pic, picNew);
                        }