2013-04-05 26 views
10

Mamy wiele raportów, których używamy na stronie internetowej. Podczas eksportowania niektórych raportów w formacie PDF rozmiar pliku staje się ogromny, a serwer ulega awarii z powodu obciążenia. Byłoby wspaniale, gdybym mógł wyłączyć opcję eksportu do formatu PDF tylko w przypadku niektórych problematycznych raportów.SSRS - Wyłączanie opcji eksportu (np. PDF) dla indywidualnych raportów

Czy istnieje sposób wyłączenia niektórych opcji eksportu (przykład: eksport do pliku PDF) w przeglądarce raportów 9.0 (SSRS) dla poszczególnych raportów?

Dziękuję.

Odpowiedz

2

Można ukryć przycisk PDF globalnie w określonym pliku konfiguracyjnym tutaj:

„INSTALLPATH \ Reporting Services \ ReportServer \ RSReportServer.config”

Aby uzyskać więcej informacji na ten temat znajduje się już wątek na ten temat na StackOverflow .

Proszę sprawdzić więcej odpowiedzi tutaj: ReportViewer - Hide PDF Export

+1

Dziękuję. Ale czy nie wyłączenie globalnie wyłączyć "eksport do pliku PDF" dla wszystkich raportów? Chcemy wyłączyć eksportowanie do formatu PDF tylko w przypadku pojedynczych raportów. – user1449265

+0

Łącze na końcu mojej odpowiedzi zawiera więcej rozwiązań dla tego konkretnego problemu bez globalnego wyłączania eksportu plików PDF. – dn7123

1

Moje rozwiązanie tego

$(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

Prawdopodobnie działało to w czasie odpowiedzi na pytanie, ale nie w nowszej wersji SSRS. Zobacz moją odpowiedź, aby uzyskać więcej informacji. –

2

Można użyć Pre_render zdarzenie w przeglądarce raportów.

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

Spójrz na tym stanowisku

Example Remove save As in SSRS

+0

Hi shamcs, Gdzie chciałbym umieścić powyższy kod. Nie sądzę, że trafi do sekcji kodu niestandardowego raportu –

+0

@MarkOKeeffe można śledzić link, który tam podaję, na kontrolerze kontrolera raportów, dodam akcję do zdarzenia OnPreRender. – shamcs

4

wszelki wypadek nikt inny nie powiedział tego głośno, zanim tutaj lub w powiązanych artykułach:

neatiest globalnym rozwiązaniem jest znalezienie renderowanie silników w pliku konfiguracyjnym RS (moje miejsce znajduje się w: C: \ Program Files \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ rsreportserver.config), przejdź do klucza xml: Rozszerzenia>Render i wstawić następującą właściwość na końcu każdego wpisu chcesz ukryć:

Visible = "false"

Przykład:

< rozszerzenie nazwy = "XML" Type = "Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport, Microsoft.ReportingServices.DataRendering" Visible = "false"/>

Alternatywnie umieścić < - i - > (komentarz HTML znacznikami) na początku i na końcu wpisu.

W przypadku raportów indywidualnych te funkcje będą działać.

+0

Ładna, zwięzła odpowiedź! – callisto

0

Korzystałem z biblioteki MvcReportViewer, aby pobrać przeglądarkę raportów SSRS w naszej aplikacji MVC. Biblioteka nie obsługuje wydarzeń cyklu życia Kontroli użytkownika, więc nie mogłem użyć metody PreRender podanej w wyniku oszustwa. Metoda JavaScript opisana przez Ristanovic Marko częściowo działa, ale selektory nie działały dla wersji SSRS, której używaliśmy, wymaga ona załadowania JQuery do IFrame i nie opisuje sposobu, aby to zrobić tylko dla określonych raportów. Oto co wymyśliłem:

w moim ReportViewer częściowy I dodaje następujący blok skryptu:

var frame = $('#reportframe'); 
var src = frame.attr('src'); 
frame.attr('src', src + '?showAdditionalExports=' + @ViewBag.ShowExportsAttribute); 

W ReportViewerWebForm.aspx dodałem kolejny blok skryptu:

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

Pytanie nie jest nowy, ale może dla innych z tym samym problemem, Moja odpowiedź też będzie przydatna. W web.config => =>configSectionsconfiguration sekcji wklej nowy config do raportu Telerik, jeśli nie masz:

<section 
     name="Telerik.Reporting" 
     type="Telerik.Reporting.Configuration.ReportingConfigurationSection, Telerik.Reporting, Version=11.0.17.118, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" 
     allowLocation="true" 
     allowDefinition="Everywhere"/> 

Użyj Telerik Verion w atrybucie version. można go znaleźć od Solution Explorer =>your project name =>References =>TelerikReporting =>Properties a także, w <configrations> ciała, pasty:

<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> 

w kodzie powyżej Wyłączyłem dowolny typ eksportu, z wyjątkiem Excel.