Средство просмотра веб-страниц служб SQL Reporting Services: можете ли вы переместить кнопку «Просмотреть отчет»?

StackOverflow https://stackoverflow.com/questions/20744

Вопрос

Используя элемент управления средством просмотра для отображения отчетов служб SQL Reporting Services на веб-странице (Microsoft.ReportViewer.WebForms), можно ли переместить кнопку «Просмотреть отчет»?По умолчанию она находится в самой правой части отчета, а это означает, что вам придется прокрутить ее до конца, прежде чем кнопка станет видимой.Это не проблема для отчетов, соответствующих ширине окна, но для очень широких отчетов это быстро становится проблемой.

Это было полезно?

Решение

Это своего рода хак, но вы можете переместить его в JavaScript.Просто посмотрите, какой HTML генерирует ReportViewer, и напишите соответствующий код JavaScript для перемещения кнопки.Я использовал JavaScript, чтобы скрыть кнопку (потому что нам нужна была собственная кнопка «Просмотреть отчет»).Любой код JavaScript, который управляет созданным HTML-кодом ReportViewer, должен располагаться после элемента управления ReportViewer на странице .aspx.Вот мой код для сокрытия кнопки, чтобы вы имели представление о том, что вы будете делать:

function getRepViewBtn() {
  return document.getElementsByName("ReportViewer1$ctl00$ctl00")[0];
}

function hideViewReportButton() { // call this where needed
  var btn = getRepViewBtn();
  btn.style.display = 'none';
}

Другие советы

Нет, вы не можете изменить положение кнопки просмотра отчета в элементе управления ReportViewer.

Однако вы можете создать свой собственный элемент управления просмотром отчетов.Элемент управления будет состоять из полей для параметров отчета и кнопки для создания отчета.Когда пользователь нажимает кнопку, вы можете создать отчет в фоновом режиме.Вы можете отобразить отчет в формате PDF, HTML и т. д.

Причина, по которой кнопка сдвинута вправо, заключается в том, что td для параметров имеет ширину = 100%.Я решаю эту проблему с помощью следующего jquery.Он просто меняет ширину параметров td на 1.Браузеры самостоятельно расширят ширину до ширины содержимого элемента.Надеюсь это поможет.

<script type="text/javascript">
    $(document).ready(function() {
        $("#<%= ReportViewer1.ClientID %> td:first").attr("width", "1");
    });
</script>

Поскольку я искал этот ответ только вчера, я решил опубликовать то, что придумал, чтобы решить нашу проблему.Наши отчеты возвращались широко, и мы хотели, чтобы кнопка «Просмотр отчетов» располагалась в левой части элемента управления, чтобы не нужно было прокручивать страницу, чтобы добраться до кнопки.Мне нужно было зайти в источник визуализированного файла, чтобы найти имена идентификаторов кнопки и целевой таблицы.

Я написал простую функцию вырезания и вставки Javascript, которая вытягивает кнопку из исходного положения и, по сути, перетаскивает ее в следующую строку содержащейся таблицы под элементами выбора даты.

function moveButton() {
  document.getElementById('ParameterTable_ctl00_MainContent_MyReports_ctl04').appendChild(document.getElementById('ctl00_MainContent_MyReports_ctl04_ctl00'));
        }

Эта функция вызывается при событии загрузки средства просмотра отчетов.

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "moveButton", "moveButton();", True)

Чтобы настроить положение, я использовал CSS ID.

#ctl00_MainContent_MyReports_ctl04_ctl00 {
    margin: 0px 0px 0px 50px;
}

У меня была та же проблема, и в итоге я использовал расширение для ответа Трэвиса Коллинза;Помимо изменения ширины столбца таблицы, я также выравниваю кнопку «Просмотреть отчет» влево, чтобы она была ближе к остальным элементам управления.

    <script type="text/javascript">
  $(document).ready(function() {
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:first-child").attr("width", "1"); 
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:last-child").attr("align", "left");   
  });
</script>

Возможно, вам придется настроить селектор JQuery в зависимости от имени элемента, присвоенного существующему элементу управления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top