2013-04-05 11 views
10

Abbiamo molti rapporti che utilizziamo sul sito web. Durante l'esportazione di alcuni report come PDF, le dimensioni del file diventano enormi e il server si blocca a causa del caricamento. Sarebbe bello se potessi disabilitare l'opzione di esportazione in PDF solo per determinati rapporti problematici.SSRS - Disattivazione delle opzioni di esportazione (ad esempio PDF) per i singoli report

Quindi esiste un modo per disattivare determinate opzioni di esportazione (ad esempio: esportazione in PDF) in Report Viewer 9.0 (SSRS), per report individuali?

Grazie.

risposta

2

È possibile nascondere pulsante PDF a livello globale in uno specifico file di configurazione qui:

"installpath \ Reporting Services \ ReportServer \ RSReportServer.config"

Per ulteriori informazioni, v'è già un argomento su questo su StackOverflow .

Si prega di verificare la presenza di altre risposte qui: ReportViewer - Hide PDF Export

+1

Grazie. Ma non disabiliterebbe globalmente la "esportazione in PDF" per tutti i report? Quello che vogliamo ottenere è poter disabilitare l'esportazione in PDF solo per i singoli report. – user1449265

+0

Il collegamento alla fine della mia risposta contiene più soluzioni per questo particolare problema senza disabilitare globalmente le esportazioni PDF. – dn7123

1

La mia soluzione per questo

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

Questo probabilmente ha funzionato nel momento in cui è stata fornita una risposta alla domanda, ma non nella versione più recente di SSRS. Vedi la mia risposta per ulteriori informazioni. –

2

È possibile utilizzare Pre_render evento in Report Viewer.

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

Date un'occhiata a questo post

Example Remove save As in SSRS

+0

Salve shamcs, dove posizionerei il codice sopra. Non credo che vada nella sezione del codice personalizzato del report –

+0

@MarkOKeeffe puoi seguire il link che ti ho dato, sul controller del visualizzatore di report, aggiungere azioni all'evento OnPreRender. – shamcs

4

Nel caso in cui nessun altro ha detto ad alta voce prima di qui o in articoli connessi:

La soluzione globale neatiest è quello di trovare il rendering dei motori nel file di configurazione RS (il mio si trova in: C: \ Programmi \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ rsreportserver.config), vai alla chiave xml: Estensioni>Render e inserire seguente proprietà alla fine di ogni voce che si vuole nascondere:

Visible = "false"

Esempio:

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

alternativa messo < -! e - > (commento HTML marcatori) all'inizio e alla fine della voce.

Per i singoli rapporti tali funzioni faranno il trucco.

+0

Bella risposta concisa! – callisto

0

Stavo usando la libreria MvcReportViewer per ottenere il visualizzatore di report di SSRS nella nostra applicazione MVC. La libreria non supporta gli eventi del ciclo di vita di Controllo utente, quindi non sono stato in grado di utilizzare il metodo PreRender fornito da shamcs. Il metodo Javascript descritto da Ristanovic Marko funziona parzialmente, ma i selettori non funzionavano per la versione di SSRS che stavamo usando, richiede JQuery per essere caricato nell'IFrame e non descrive un modo per farlo solo per report specifici. Ecco quello che mi si avvicinò con:

Nel mio ReportViewer parziale, ho aggiunto il seguente blocco di script:

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

In ReportViewerWebForm.aspx, ho aggiunto un altro blocco di script:

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

La domanda non è nuovo, ma forse per gli altri con lo stesso problema, anche la mia risposta è utile. In web.config =>configuration =>configSections sezione incollare una nuova configurazione per il rapporto Telerik, se non si dispone di:

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

Usa il tuo verion Telerik nell'attributo version. lo si può trovare da Solution Explorer =>your project name =>References =>TelerikReporting =>Properties E anche, in <configrations> corpo, pasta:

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

Nel codice di cui sopra ho disabilitato qualsiasi tipo di esportazione, ad eccezione di Excel.