Visionneuse SQL Reporting Services pour la page Web : pouvez-vous déplacer le bouton Afficher le rapport ?

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

Question

À l’aide du contrôle de visualisation pour l’affichage des rapports SQL Reporting Services sur la page Web (Microsoft.ReportViewer.WebForms), pouvez-vous déplacer le bouton Afficher le rapport ?Il se trouve par défaut à l'extrême droite du rapport, ce qui signifie que vous devez faire défiler complètement avant que le bouton soit visible.Ce n'est pas un problème pour les rapports qui correspondent à la largeur de la fenêtre, mais pour les rapports très larges, cela pose rapidement problème.

Était-ce utile?

La solution

C'est une sorte de hack, mais vous pouvez le déplacer en JavaScript.Voyez simplement le code HTML généré par ReportViewer et écrivez le code JavaScript approprié pour déplacer le bouton.J'ai utilisé JavaScript pour masquer le bouton (car nous voulions notre propre bouton Afficher le rapport).Tout code JavaScript qui manipule le HTML du ReportViewer généré doit venir après le contrôle ReportViewer dans la page .aspx.Voici mon code pour masquer le bouton, pour vous donner une idée de ce que vous feriez :

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

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

Autres conseils

Non, vous ne pouvez pas repositionner le bouton Afficher le rapport dans le contrôle ReportViewer.

Cependant, vous pouvez créer votre propre contrôle d'affichage de rapport personnalisé.Le contrôle serait composé de champs pour les paramètres du rapport et d'un bouton pour générer le rapport.Lorsqu'un utilisateur clique sur le bouton, vous pouvez générer le rapport en arrière-plan.Vous pouvez afficher le rapport au format PDF, HTML, etc.

La raison pour laquelle le bouton est poussé vers la droite est que le td des paramètres a width="100%".Je résous ce problème avec le jquery suivant.Cela change simplement la largeur des paramètres td en 1.Les navigateurs étendront eux-mêmes la largeur jusqu'à la largeur du contenu de l'élément.J'espère que cela t'aides.

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

Comme je cherchais cette réponse hier, j'ai pensé publier ce que j'avais trouvé pour résoudre notre problème.Nos rapports revenaient largement et nous voulions que le bouton « Afficher les rapports » existe sur le côté gauche du contrôle afin qu'il n'y ait pas besoin de faire défiler pour accéder au bouton.J'ai dû accéder à la source du fichier rendu pour trouver les noms d'ID du bouton et de la table cible.

J'ai écrit une simple fonction javascript couper-coller pour extraire le bouton de sa position d'origine et le déposer essentiellement dans la ligne suivante du tableau contenant sous les sélecteurs de date.

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

Cette fonction est appelée lors de l'événement de chargement de la visionneuse de rapports.

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

Pour ajuster la position, j'ai utilisé l'ID CSS.

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

J'ai eu le même problème et j'ai fini par utiliser une extension sur la réponse de Travis Collins ;En plus de modifier la largeur des colonnes du tableau, j'aligne également le bouton "Afficher le rapport" à gauche afin qu'il apparaisse plus proche du reste des contrôles.

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

Vous devrez peut-être modifier le sélecteur JQuery en fonction du nom d'élément attribué à votre contrôle existant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top