5

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

我已经计算出有多少页面需要图像(请参阅如何从 CrystalReportsViewer 获取渲染页面的数量?),但无法在每个页面上获取不同的图像。

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

4

2 回答 2

1

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

  1. 将占位符图像放在所需的部分,位置。
  2. 右键单击图像->转到“格式化图形”->选择“图片”选项卡
  3. 您应该看到一个按钮,允许您输入“图形位置”的公式
  4. 使用公式通过“pagenumber”关键字解析为有效的图像文件路径:
select pagenumber
case 1 : "C:\picture1.bmp"
case 2 : "C:\picture2.bmp"
...
default : "C:\warning.bmp"
于 2012-12-12T16:48:27.587 回答
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);
                        }
于 2012-12-12T18:52:22.373 回答