我们在网站上使用了许多报告。在将一些报告导出为 PDF 时,文件会变得很大,并且服务器会因负载而崩溃。因此,如果我可以仅为某些有问题的报告禁用导出到 PDF 选项,那就太好了。
那么有没有办法在报表查看器 9.0 (SSRS) 中为单个报表禁用某些导出选项(例如:导出为 PDF)?
谢谢你。
我们在网站上使用了许多报告。在将一些报告导出为 PDF 时,文件会变得很大,并且服务器会因负载而崩溃。因此,如果我可以仅为某些有问题的报告禁用导出到 PDF 选项,那就太好了。
那么有没有办法在报表查看器 9.0 (SSRS) 中为单个报表禁用某些导出选项(例如:导出为 PDF)?
谢谢你。
以防万一在此之前或在链接的文章中没有其他人大声说出来:
最简洁的全局解决方案是在 RS 配置文件中找到渲染引擎(我的位于:C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config),转到 xml 键:Extensions >在您要隐藏的每个条目的末尾呈现并插入以下属性:
可见=“假”
例子:
<Extension Name="XML" Type="Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRendering" Visible="false" />
或者将<!--和-->(HTML 注释标记)放在条目的开头和结尾。
对于个人报告,这些功能可以解决问题。
您可以在报表查看器中使用 Pre_render 事件。
protected void ReportViewer1_PreRender(object sender, EventArgs e)
{
DisableUnwantedExportFormat((ReportViewer)sender, "Excel");
DisableUnwantedExportFormat((ReportViewer)sender, "Word");
}
看看这个帖子
您可以在此处的特定配置文件中全局隐藏 PDF 按钮:
“InstallPath\Reporting Services\ReportServer\rsreportserver.config”
有关更多信息,StackOverflow 上已经有一个关于此的主题。
请在此处查看更多答案:ReportViewer - 隐藏 PDF 导出
我的解决方案
$(document).ready(function() {
var sel = $("select#ReportViewer2_ctl01_ctl05_ctl00");
sel.find("option[value='XML']").remove();
sel.find("option[value='CSV']").remove();
sel.find("option[value='IMAGE']").remove();
sel.find("option[value='MHTML']").remove();
sel.find("option[value='PDF']").remove();
sel.find("option[value='EXCEL']").remove();
});
这解决了问题(部分为我们):
我正在使用 MvcReportViewer 库在我们的 MVC 应用程序中获取 SSRS 的报表查看器。该库不支持用户控制生命周期事件,因此我无法使用 shamcs 提供的 PreRender 方法。Ristanovic Marko 描述的 Javascript 方法部分有效,但选择器不适用于我们使用的 SSRS 版本,它需要在 IFrame 中加载 JQuery,并且它没有描述仅针对特定报告执行此操作的方法。这是我想出的:
在我的 ReportViewer 部分中,我添加了以下脚本块:
var frame = $('#reportframe');
var src = frame.attr('src');
frame.attr('src', src + '?showAdditionalExports=' + @ViewBag.ShowExportsAttribute);
在 ReportViewerWebForm.aspx 中,我添加了另一个脚本块:
var urlParams = new URLSearchParams(location.search);
if (urlParams.get('showAdditionalExports') === 'true') {
document.addEventListener("DOMContentLoaded",
function() {
['Word', 'Excel'].map(function(title) {
var menuItem = document.querySelector("#ReportViewer1 a[title='" + title + "']")
.parentNode;
menuItem.parentNode
.removeChild(menuItem);
});
});
}
您可以在该保存按钮上使用 div 并设置其属性,如下所示
<div style="
background-color: white;
z-index: 100;
height: 61px;
position: absolute;
padding-left: 500;
padding-left: 36px;
margin-left: 370px;
opacity: 0.5;
"></div>
这个问题并不新鲜,但也许对于其他有同样问题的人来说,我的回答也很有用。在web.config
=> configuration
=>configSections
部分粘贴一个新的 Telerik 报告配置,如果您没有:
<section
name="Telerik.Reporting"
type="Telerik.Reporting.Configuration.ReportingConfigurationSection, Telerik.Reporting, Version=11.0.17.118, Culture=neutral, PublicKeyToken=a9d7983dfcc261be"
allowLocation="true"
allowDefinition="Everywhere"/>
version
在属性中使用您的 Telerik 版本。您可以从Solution Explorer
=> your project name
=> References
=> TelerikReporting
=>Properties
找到它,
另外,在<configrations>
正文中,粘贴:
<Telerik.Reporting>
<extensions>
<render>
<extension name="RTF" visible="false">
</extension>
<extension name="PDF" visible="false">
</extension>
<extension name="CSV" visible="false">
</extension>
<extension name="IMAGE" visible="false">
</extension>
<extension name="MHTML" visible="false">
</extension>
<extension name="XPS" visible="false">
</extension>
</render>
</extensions>
</Telerik.Reporting>
在上面的代码中,我禁用了除 Excel 之外的任何导出类型。