2010-08-11 9 views
1

J'ai récemment commencé à travailler avec SSRS 2008 et ASP.Net. Je dois développer un rapport avec 3 niveaux de détail différents. Donc, j'ai décidé que la meilleure solution était de développer 3 rapports différents et de fournir un mécanisme de perçage afin de permettre la navigation. Pour cela, je mets la propriété 'Action' de l'une des zones de texte à 'Aller au rapport' et définissez l'URL correcte.L'action 'Aller au rapport' (extraction) ne fonctionnait pas dans SSRS et ASP.NET

Les paramètres transmis au rapport doivent d'abord être validés. Donc, pour une question de flexibilité et une meilleure expérience utilisateur, je laisse l'utilisateur entrer les paramètres en utilisant les contrôles ASP.Net standard. Lorsque les utilisateurs sur clics mon bouton personnalisé « Afficher rapport » le code suivant exécute:

 ReportViewer2.ServerReport.ReportPath = ".. my report path .."; 
     ReportViewer2.ServerReport.ReportServerUrl = new Uri(".. my report url .."); 
     ReportParameter p1 = new ReportParameter("dateStart", dateStart.ToString()); 
     ReportParameter p2 = new ReportParameter("dateEnd", dateEnd.ToString()); 
     ReportViewer2.ServerReport.SetParameters(p1); 
     ReportViewer2.ServerReport.SetParameters(p2); 
     ReportViewer2.ServerReport.Refresh(); 

Ensuite le rapport est présenté, mais les liens pour naviguer vers les autres rapports ne fonctionnent pas. Vous remarquerez peut-être que les paramètres ajoutés sont visibles, ce qui me permet d'appuyer sur le bouton "Voir le rapport" qui est intégré dans la visionneuse de rapports. Si je le fais, le rapport est rendu à nouveau et ensuite tout est OK. C'est comme si la méthode ReportViewer.ServerReport.Refresh() manquait quelque chose.

C'est un problème, car les conditions stipulent que les paramètres doivent être masqués. Lorsque j'exécute le rapport à partir de VS ou du Report Server, les liens fonctionnent bien, mais dans ce cas, je dois toujours appuyer sur le bouton standard 'Voir le rapport'.

Est-ce un bug du contrôle ReportViewer ou manque-t-il quelque chose ici? Merci d'avance.

Cordialement,

Gonzalo.

Répondre

2

La visionneuse de rapports contient un panneau de mise à jour. Vous devez appeler la méthode de mise à jour du panneau de mise à jour en cas de pré-rendu du spectateur du rapport:

protected void ReportViewer2_PreRender(object sender, EventArgs e) { ((UpdatePanel)this.ReportViewer2.Controls[1]).Update(); }

+0

Il marchait bien. Merci beaucoup! –