SQL Reporting Services-Viewer für Webseiten – können Sie die Schaltfläche „Bericht anzeigen“ verschieben?

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

Frage

Können Sie mithilfe des Viewer-Steuerelements für die Anzeige von SQL Reporting Services-Berichten auf einer Webseite (Microsoft.ReportViewer.WebForms) die Schaltfläche „Bericht anzeigen“ verschieben?Standardmäßig befindet es sich ganz rechts im Bericht, was bedeutet, dass Sie ganz nach unten scrollen müssen, bevor die Schaltfläche sichtbar ist.Für Berichte, die zur Fensterbreite passen, ist das kein Problem, aber bei sehr breiten Berichten wird das schnell zum Problem.

War es hilfreich?

Lösung

Es ist eine Art Hack, aber Sie können ihn in JavaScript verschieben.Sehen Sie sich einfach an, welchen HTML-Code der ReportViewer generiert, und schreiben Sie den entsprechenden JavaScript-Code, um die Schaltfläche zu verschieben.Ich habe JavaScript verwendet, um die Schaltfläche auszublenden (weil wir unsere eigene Schaltfläche „Bericht anzeigen“ wollten).Jeder JavaScript-Code, der den generierten ReportViewer-HTML manipuliert, muss nach dem ReportViewer-Steuerelement auf der ASPX-Seite stehen.Hier ist mein Code zum Ausblenden der Schaltfläche, um Ihnen eine Vorstellung davon zu geben, was Sie tun würden:

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

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

Andere Tipps

Nein, Sie können die Schaltfläche „Bericht anzeigen“ im ReportViewer-Steuerelement nicht neu positionieren.

Sie können jedoch Ihr eigenes benutzerdefiniertes Steuerelement für die Berichtsanzeige erstellen.Das Steuerelement würde aus Feldern für Berichtsparameter und einer Schaltfläche zum Generieren des Berichts bestehen.Wenn ein Benutzer auf die Schaltfläche klickt, können Sie den Bericht im Hintergrund erstellen.Sie können den Bericht als PDF, HTML usw. anzeigen.

Der Grund, warum die Schaltfläche nach rechts verschoben wird, liegt darin, dass das TD für die Parameter die Breite = „100 %“ hat.Ich löse dieses Problem mit der folgenden Abfrage.Es ändert einfach die Breite des Parameters td auf 1.Browser erweitern die Breite selbstständig auf die Breite des Elementinhalts.Hoffe das hilft.

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

Da ich erst gestern nach dieser Antwort gesucht habe, dachte ich, ich poste, was ich zur Lösung unseres Problems gefunden habe.Unsere Berichte kamen immer wieder zurück und wir wollten, dass die Schaltfläche „Berichte anzeigen“ auf der linken Seite des Steuerelements vorhanden ist, sodass kein Scrollen erforderlich ist, um zu der Schaltfläche zu gelangen.Ich musste in die Quelle der gerenderten Datei gehen, um die ID-Namen der Schaltfläche und der Zieltabelle zu finden.

Ich habe eine einfache Javascript-Funktion zum Ausschneiden und Einfügen geschrieben, um die Schaltfläche aus ihrer ursprünglichen Position zu ziehen und sie im Wesentlichen in der nächsten Zeile der enthaltenden Tabelle unterhalb der Datumsauswahl abzulegen.

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

Diese Funktion wird beim Ladeereignis des Berichtsviewers aufgerufen.

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

Um die Position anzupassen, habe ich die CSS-ID verwendet.

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

Ich hatte das gleiche Problem und habe schließlich eine Erweiterung für die Antwort von Travis Collins verwendet.Ich ändere nicht nur die Breite der Tabellenspalte, sondern richte auch die Schaltfläche „Bericht anzeigen“ links aus, sodass sie näher an den übrigen Steuerelementen erscheint.

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

Abhängig von der Ihrem vorhandenen Steuerelement zugewiesenen Elementbenennung müssen Sie möglicherweise den JQuery-Selektor anpassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top