2013-04-05 3 views
10

У нас есть много отчетов, которые мы используем на веб-сайте. При экспорте некоторых отчетов в формате PDF размер файла становится огромным, и сервер вылетает из-за загрузки. Поэтому было бы здорово, если бы я мог отключить экспорт в PDF-файл только для определенных проблемных отчетов.SSRS - Отключение параметров экспорта (например, PDF) для отдельных отчетов

Итак, есть способ отключить определенные параметры экспорта (пример: экспорт в PDF) в средство просмотра отчетов 9.0 (SSRS) для отдельных отчетов?

спасибо.

ответ

2

Вы можете скрыть кнопку PDF глобально в определенном файле конфигурации здесь:

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

Для получения дополнительной информации, уже есть тема об этом на StackOverflow ,

Пожалуйста, проверьте больше ответов здесь: ReportViewer - Hide PDF Export

+1

Спасибо. Но не отключить глобально отключить «экспорт в PDF» для всех отчетов? Мы хотим, чтобы вы могли отключить экспорт в PDF только для отдельных отчетов. – user1449265

+0

Ссылка в конце моего ответа содержит больше решений для этой конкретной проблемы без глобального отключения экспорта PDF. – dn7123

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. См. Мой ответ для получения дополнительной информации. –

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, Где бы я разместил вышеуказанный код. Я не думаю, что это входит в пользовательский раздел кода отчета –

+0

@MarkOKeeffe, вы можете следить за ссылкой, которую я даю там, на контроллере просмотра отчетов, добавлять действие к событию OnPreRender. – shamcs

4

Только в случае, если никто не сказал это вслух, прежде чем здесь или в связанных статьях:

neatiest глобальное решение найти (my находится в: C: \ Program Files \ Microsoft SQL Server \ MSRS12.MSSQLSERVER \ Reporting Services \ ReportServer \ rsreportserver.config), перейдите к xml-ключу: Расширения>Рендер и вставьте следующее свойство в конце каждой записи, которую вы хотите скрыть:

Visible = "ложных"

Пример:

< Extension Name = "XML" Тип = "Microsoft.ReportingServices.Rendering.DataRenderer.XmlDataReport, Microsoft.ReportingServices.DataRendering" Видимый = "false"/>

Альтернативно поставил < - и - > (HTML комментарий маркеров) в начале и в конце записи.

Для отдельных отчетов эти функции будут делать трюк.

+0

Хороший краткий ответ! – callisto

0

Я использовал библиотеку MvcReportViewer, чтобы получить средство просмотра отчетов SSRS в нашем приложении MVC. Библиотека не поддерживает события жизненного цикла User Control, поэтому я не смог использовать метод PreRender, заданный shamcs. Метод 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 Verion в 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.

Смежные вопросы