在远程报表查看器/服务器报表中请求单个报表页



我试图从远程报表中获取一页,但我从远程报表服务器获取整个多页报表:

var rsReports = new Microsoft.Reporting.WebForms.ReportViewer
{
    ProcessingMode = ProcessingMode.Remote,
    ShowParameterPrompts = false,
    CurrentPage = page // In theory this should be enough, but makes absolutely no difference
}
rsReports.ServerReport.ReportServerCredentials = new ReportServerCredentials(username, password, domain);
rsReports.ServerReport.ReportServerUrl = remoteServerUrl;
rsReports.ServerReport.ReportPath = reportPath;
rsReports.ServerReport.SetParameters(parameters);
rsReports.ServerReport.Refresh();
return rsReports.ServerReport.Render("HTML4.0"); // Returns a byte[] of html containing all report pages

有没有办法从远程报表服务器只请求 1 个单页?

使用 ReportExecution api,您将找到一个名为 DeviceInformation 的参数。这是一个 xml 配置结构,其中包含针对多个输出设备的额外信息。HTML40 的一个属性称为 Section。DeviceInformation.Section属性允许您指定报表中要返回的页面。这与 ReportViewer 控件有何关系,默认情况下,报表查看器控件的内容以 html 格式返回,因此,如果可以使用呈现方法设置DeviceInfo结构,这将是一个可用的选项。我能够在这里找到有关通过 url 设置设备信息的信息。也许这会有所帮助。

实际上,我重新阅读了您的问题,似乎您在问您能否以这样一种方式仅检索 600 页报告中的第 600 页,并且只返回第 1/1 页而不是 10/???这是正确的吗?如果是这样,则必须在数据集或报表元素本身中放置页面筛选机制。默认行为是呈现足够的报表以获取分页指标。因此,有时您将看到第 1/3 页,有时会看到第 1/600 页(选择最后一页后),有时会看到第 1/???, 页,该信息可以在报表以 RenderInfo 格式呈现后获得。如果你想让观众认为只有一个页面,那么你将不得不欺骗它。如果您想要第 10/??? 页,我的第一个建议将起作用回来分页和所有。

最新更新