从报表查看器导出时更改 PDF 上的报表名称
Posted
技术标签:
【中文标题】从报表查看器导出时更改 PDF 上的报表名称【英文标题】:Change Report Name On PDF when exporting from report viewer 【发布时间】:2015-03-03 11:40:25 【问题描述】:我有一份工作报告,但我想更改报告名称。默认情况下,它使用 RDL 文件名。我想为下载的文件设置不同的名称。
有没有办法为从 s-s-rS 下载的报告动态生成文件名?
【问题讨论】:
【参考方案1】:请尝试使用 ReportViewer 的 DisplayName 属性
ReportViewer.ServerReport.DisplayName = <Your Parameter Value>;
ReportViewer.LocalReport.DisplayName = <Your Parameter Value>;
【讨论】:
太好了,如果有用,请标记..这将帮助其他面临类似问题的人【参考方案2】:如果您使用的是数据驱动订阅,则可以使用 SQL 动态设置报告名称。
否则无法在 s-s-rS 中执行此操作。您始终可以在导出后使用外部脚本为您重命名 PDF,但这不是完全自动的。
【讨论】:
不,我没有使用数据驱动订阅 那我觉得你倒霉了。 任何改变点击事件的方法【参考方案3】:您也可以使用 javascript 挂钩来执行此操作。有一个教程 here 让我开始了,但对我没有完全的工作。
我最终做的是在<sql server folder>\ReportServer\Pages\
中的ReportViewer.aspx 中添加一些javascript,在<body>
末尾的脚本标记中。对 URL 的检查确保它只影响应该更改名称的报告。
这适用于空格和其他特殊字符(只要文件名中允许它们)。
function modifyExportFileName()
/* Change the name of file exports */
var filename = false;
if (window.location.href.indexOf('Folder/Report') !== -1) //it's the report we want
filename = getParameter('parameter'); // returns false if not set
// should also have access to report DOM here, also Date(), etc.
// could add more here as needed in else if blocks
if (filename) // we have a filename set.
console.log('changing filename of exported reports to ' + filename);
changeFilename(filename);
function getParameter(param)
//case sensitive parameter extractor.
var l = window.location.href;
if (l.indexOf(param + '=' > -1))
var param_location = l.indexOf(param + '=') + (param + '=').length;
return l.substring(param_location, l.indexOf('&', param_location + 1));
return false;
function changeFilename(filename)
var r = null,
url = null;
try
r = this.$find('ReportViewerControl')._getInternalViewer();
catch(e)
setTimeout(function () changeFilename(filename), 1000); //maybe we're not done loading.
console.log("trying again");
return false;
url = r.ExportUrlBase;
if (url)
var i = url.indexOf('FileName='),
j = url.indexOf('&', i+1);
r.ExportUrlBase = url.substring(0, i) + 'FileName=' + filename + url.substring(j);
console.log('reset filename to ' + filename);
modifyExportFileName();
编辑:我注意到这段代码没有在公司网络的 IE 中运行。原因是console.logs。如果您的网站在 IE 兼容模式下运行,请将它们注释掉,因为 IE5 没有控制台。
【讨论】:
以上是关于从报表查看器导出时更改 PDF 上的报表名称的主要内容,如果未能解决你的问题,请参考以下文章
当带有报表查看器的表单加载时,通过 C# 代码动态更改 Crystal Report 的数据库路径
在 Crystal Report Viewer 中自定义导出选项
MVCReportViewer :报表查看器 Web 控件需要 Web 表单上的 System.Web.UI.ScriptManager