1

语境

我实际上正在做一个项目,我需要编写一份使用我们的自定义工具设计的报告。用户将使用他将按特定顺序放置的现有报告来撰写此报告。因此,基本上,为了记录组合报表设计,我们将其保存在一个对象模型中,其中包含基础报表列表及其顺序。

挑战

目标是简单地显示从 DataSet 中检索 ReportName 的 SubReport 列表。

我试过的

我做了一个 DataSet,它将返回包含报告显示顺序、服务器上的报告路径和报告参数(如果可用)的行。所以我添加了一个带有单个单元格的 Tablix,其中包含一个子报表。由于 Tablix 将遍历所有 DataSet 行,因此我尝试设置 SubReport 的 ReportName。但不幸的是,看起来 SubReport.ReportName 不接受从 DataSet 计算的值。

我试过这个但它不起作用:

...
<Tablix Name="ReportModuleTablix">
    <DataSetName>ReportModules</DataSetName>
    ...
    <TablixBody>
        ... 
        <TablixRows>
            <TablixRow>
                ...
                <TablixCells>
                    <TablixCell>
                        <CellContents>
                            <Rectangle Name="SubReportRectangle">
                                <ReportItems>
                                    ...
                                    <Subreport Name="ModuleReport">
                                        <ReportName>=Fields!Path.Value</ReportName>
                                    </Subreport>
                                </ReportItems>
                            </Rectangle>
                        </CellContents>
                    </TablixCell>
                </TablixCells>
            </TablixRow>
        </TablixRows>
    </TablixBody>
    ...
</Tablix>
...

=Fields!Path.Value表示当前 DataSet 行的报表路径。

我真的需要能够显示从 DataSet 参数化的报告列表,因此我想知道如何实现我的目标。我查看了自定义 ReportItem,但文档很尴尬,而且不是最新的。

谢谢。

4

1 回答 1

2

我们最终选择了从代码生成 RDL,这意味着将使用 RDL 对象模型手动添加子报表项,但它需要对内部类进行一些修改(RdlSerializer)。

我在这篇文章中写过它:https ://github.com/Ucodia/Blog-CustomReportingServices

于 2011-09-30T09:14:27.143 回答