SSRS - 禁用单个报告的导出选项(例如PDF)

时间:2013-04-05 10:14:59

标签: ssrs-2008 reportviewer reporting-services

我们在网站上使用了很多报告。将某些报告导出为PDF时,文件大小变大,服务器因负载而崩溃。因此,如果我可以仅针对某些有问题的报告禁用导出到PDF选项,那将会很棒。

那么有没有办法在报表查看器9.0(SSRS)中为单个报表禁用某些导出选项(例如:导出为PDF)?

谢谢。

8 个答案:

答案 0 :(得分:6)

以防万一其他人在此之前或链接文章中大声说出来:

最简洁的全局解决方案是在RS配置文件中找到渲染引擎(我位于: C:\ Program Files \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ rsreportserver.config ),转到xml键:扩展程序> 渲染,并在要隐藏的每个条目的末尾插入以下属性:

  

可见= “假”

示例:

  

< Extension Name =“XML”Type =“Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRendering” Visible =“false” />

或者在条目的开头和结尾添加<! - - > (HTML评论标记)。

对于个人报告,这些功能可以解决问题。

答案 1 :(得分:2)

您可以在此处在特定配置文件中全局隐藏PDF按钮:

“InstallPath \ Reporting Services \ ReportServer \ rsreportserver.config”

有关详细信息,StackOverflow上已有一个关于此主题的主题。

请在此处查看更多答案:ReportViewer - Hide PDF Export

答案 2 :(得分:2)

您可以在报告查看器中使用Pre_render事件。

  protected void ReportViewer1_PreRender(object sender, EventArgs e)
        {
            DisableUnwantedExportFormat((ReportViewer)sender, "Excel");
            DisableUnwantedExportFormat((ReportViewer)sender, "Word");
        } 

看一下这篇文章

Example Remove save As in SSRS

答案 3 :(得分:1)

我的解决方案

$(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();
});

答案 4 :(得分:0)

答案 5 :(得分:0)

我正在使用MvcReportViewer库在我们的MVC应用程序中获取SSRS的报表查看器。该库不支持用户控件生命周期事件,因此我无法使用shamcs提供的PreRender方法。 Ristanovic Marko描述的Javascript方法部分有效,但选择器不能用于我们使用的SSRS版本,它需要在IFrame中加载JQuery,并且它没有描述仅为特定报告执行此操作的方法。这就是我想出的:

在我的ReportViewer partial中,我添加了以下脚本块:

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);
            });
        });
    }

答案 6 :(得分:0)

您可以在该保存按钮上使用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> 

答案 7 :(得分:-1)

问题不是新问题,但也许对于有同样问题的其他人来说,我的回答也很有用。在web.config =&gt; configuration =&gt; 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 verion。你可以从Solution Explorer =&gt;找到它your project name =&gt; References =&gt; TelerikReporting =&gt; 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之外的任何导出类型。