Я использовал библиотеку 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);
});
});
}
Спасибо. Но не отключить глобально отключить «экспорт в PDF» для всех отчетов? Мы хотим, чтобы вы могли отключить экспорт в PDF только для отдельных отчетов. – user1449265
Ссылка в конце моего ответа содержит больше решений для этой конкретной проблемы без глобального отключения экспорта PDF. – dn7123