2008-08-21 5 views
4

L'utilisation du contrôle Viewer 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 est défini par défaut sur le côté droit du rapport, ce qui signifie que vous devez faire défiler tout le contenu avant que le bouton ne soit visible. Ce n'est pas un problème pour les rapports qui correspondent à la largeur de la fenêtre, mais sur des rapports très larges, cela pose rapidement un problème. Non, vous ne pouvez pas repositionner le bouton de rapport de vue dans le contrôle ReportViewer.Visionneuse SQL Reporting Services pour la page Web: pouvez-vous déplacer le bouton Afficher le rapport?

Répondre

2

C'est un peu un hack, mais vous pouvez le déplacer en JavaScript. Voyez juste ce que génère HTML ReportViewer, et écrivez le code JavaScript approprié pour déplacer le bouton. J'ai utilisé JavaScript pour cacher le bouton (parce que nous voulions notre propre bouton Voir le rapport). Tout code JavaScript qui manipule le code HTML de ReportViewer généré doit venir après le contrôle ReportViewer dans la page .aspx. Voici mon code pour cacher le bouton, pour vous donner une idée de ce que vous faites:

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

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

Toutefois, vous pouvez créer votre propre contrôle d'affichage de rapport personnalisé. Le contrôle comprendrait des champs pour les paramètres de rapport et 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 en format PDF, HTML, etc.

+0

@Cowthulhu Remarquez comment j'ai dit "dans le contrôle ReportViewer". Je pense toujours que c'est une réponse valide puisque la capacité de cacher le bouton n'est pas intégrée. La seule façon de contourner est de manipuler le bouton en dehors du contrôle sur la page en utilisant JavaScript comme indiqué dans la réponse acceptée ci-dessus. –

+0

Vous avez raison, désolé à ce sujet. J'ai supprimé mon commentaire. – Cowthulhu

1

La raison pour laquelle le bouton est poussé vers la droite est que le td pour les paramètres a width = "100% ". Je résous ce problème avec le jquery suivant. Il modifie simplement la largeur des paramètres td à 1. Les navigateurs étendent la largeur par eux-mêmes à 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> 
1

Depuis que je cherchais cette réponse plus tard qu'hier, je pensais que je poste ce que je suis venu avec pour résoudre notre problème. Nos rapports revenaient en arrière, et nous voulions que le bouton "afficher les rapports" existe sur le côté gauche du contrôle, il n'était donc pas nécessaire de faire défiler pour accéder au bouton. J'ai dû aller dans la source du fichier rendu pour trouver les noms d'identification du bouton et de la table cible.

J'ai écrit une simple fonction javascript copier-coller pour retirer le bouton de sa position d'origine et le déposer essentiellement dans la rangée suivante dans le tableau qui se trouve 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 dans l'événement de chargement du visualiseur de rapports.

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

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

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