Visualizzatore SQL Reporting Services per pagina Web: è possibile spostare il pulsante Visualizza report?

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

Domanda

Utilizzando il controllo visualizzatore per la visualizzazione dei report SQL Reporting Services nella pagina Web (Microsoft.ReportViewer.WebForms), è possibile spostare il pulsante Visualizza report?Per impostazione predefinita si trova all'estrema destra del report, il che significa che è necessario scorrere fino in fondo prima che il pulsante sia visibile.Non è un problema per i report che si adattano alla larghezza della finestra, ma per report molto ampi diventa subito un problema.

È stato utile?

Soluzione

È una specie di hack, ma puoi spostarlo in JavaScript.Basta vedere quale HTML genera ReportViewer e scrivere il codice JavaScript appropriato per spostare il pulsante.Ho utilizzato JavaScript per nascondere il pulsante (perché volevamo il nostro pulsante Visualizza rapporto).Qualsiasi codice JavaScript che manipola l'HTML del ReportViewer generato deve trovarsi dopo il controllo ReportViewer nella pagina .aspx.Ecco il mio codice per nascondere il pulsante, per darti un'idea di cosa faresti:

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

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

Altri suggerimenti

No, non è possibile riposizionare il pulsante Visualizza report nel controllo ReportViewer.

Tuttavia, puoi creare il tuo controllo personalizzato per la visualizzazione dei report.Il controllo sarebbe composto da campi per i parametri del report e da un pulsante per generare il report.Quando un utente fa clic sul pulsante è possibile generare il report in background.È possibile visualizzare il report come PDF, HTML, ecc.

Il motivo per cui il pulsante viene spostato a destra è che il td per i parametri ha larghezza="100%".Sto risolvendo questo problema con il seguente jquery.Cambia semplicemente la larghezza dei parametri td su 1.I browser espanderanno autonomamente la larghezza fino alla larghezza del contenuto dell'elemento.Spero che questo ti aiuti.

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

Dato che stavo cercando questa risposta proprio ieri, ho pensato di pubblicare ciò che mi è venuto in mente per risolvere il nostro problema.I nostri rapporti tornavano sempre più ampi e volevamo che il pulsante "Visualizza rapporti" fosse presente sul lato sinistro del controllo in modo che non fosse necessario scorrere per raggiungere il pulsante.Avevo bisogno di accedere all'origine del file renderizzato per trovare i nomi ID del pulsante e della tabella di destinazione.

Ho scritto una semplice funzione javascript taglia e incolla per estrarre il pulsante dalla sua posizione originale e rilasciarlo essenzialmente nella riga successiva nella tabella contenente sotto i selettori di date.

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

Questa funzione viene chiamata all'evento di caricamento del visualizzatore di report.

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

Per regolare la posizione, ho utilizzato l'ID CSS.

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

Ho avuto lo stesso problema e ho finito per utilizzare un'estensione sulla risposta di Travis Collins;Oltre a modificare la larghezza delle colonne della tabella, allineo anche il pulsante "Visualizza report" a sinistra in modo che appaia più vicino al resto dei controlli.

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

Potrebbe essere necessario modificare il selettore JQuery in base alla denominazione dell'elemento assegnata al controllo esistente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top