2013-04-05 75 views
10

我们在网站上使用了许多报告。在将某些报告导出为PDF时,文件大小变大,服务器因加载而崩溃。所以,如果我只能针对某些有问题的报告禁用导出为PDF选项,那就太好了。SSRS - 为个别报告禁用导出选项(例如PDF)

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

谢谢。

回答

2

可以在全局范围隐藏在一个特定的配置文件在这里PDF按钮:

“安装路径\ Reporting Services的\的ReportServer \ rsreportserver.config”

有关详细信息,已经有关于这个StackOverflow上的话题。

请更多的答案点击这里:ReportViewer - Hide PDF Export

+1

谢谢。但是不能全局禁用所有报告的“导出为PDF”?我们想要实现的目的是能够禁止仅为单个报告导出为PDF。 – user1449265 2013-04-09 09:20:06

+0

我的答案末尾的链接包含针对此特定问题的更多解决方案,而不会全局禁用PDF导出。 – dn7123 2013-04-12 07:47:56

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

这个问题可能在问题得到解答时发挥作用,但不在新版本的SSRS中。查看我的答案获取更多信息。 – 2017-08-03 15:35:54

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

+0

嗨shamcs,我会在哪里放置上面的代码。我不认为它进入报告的自定义代码部分 – 2014-10-29 09:28:46

+0

@MarkOKeeffe您可以按照我在那里给出的链接,在报告查看器控制器上,向事件OnPreRender添加操作。 – shamcs 2014-10-30 09:37:58

4

万一别人说出声之前在这里或在相关报道:

的neatiest全球性解决方案是找到(我的程序位于:C:\ Program Files \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ rsreportserver.config),请转至xml键: 扩展>渲染,并在每个条目的末尾插入下面的属性,你要隐藏:

可见= “假”

例子:

<扩展名=“XML”Type =“Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport,Microsoft.ReportingServices.DataRendering”Visible =“false”/>

或者把< - !- >(HTML注释标记)在入口的开始和结束。

对于个别报告,这些功能将会有所斩获。

+0

好简洁的回答! – callisto 2016-09-09 06:10:06

0

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

在我的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); 
      }); 
     }); 
    } 
-1

问题不是新的,但也许对于有同样问题的人来说,我的答案也是有用的。在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"/> 

使用您的优化版本Telerik的在version属性。你可以从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中。