lier rapport à reportviewer web mvc2
J'ai asp.net MVC2 application.
Je suis à l'aide de VS2008 et voulez brancher rapport généré à partir de mon contrôleur de reportviewer.
des idées?
pour l'instant j'ai ce code
"Contrôleur"
//should pass data to report
public ActionResult GenerateReport()
{
LocalReport report = new LocalReport();
report.ReportPath = Server.MapPath("~/Reports/KingsCourt.rdlc");
List<InvoiceRow> rows = new List<InvoiceRow>();
rows.Add(new InvoiceRow { name = "Testing item", value = (decimal)25.85 });
rows.Add(new InvoiceRow { name = "Testing item2", value = (decimal)5.15 });
ReportDataSource source = new ReportDataSource("InvoiceRow", rows);
report.DataSources.Add(source);
ViewData["InvoiceRow"] = report;
return View();
}
et Afficher la page:
<form id="form1" runat="server">
<h2>GenerateReport</h2>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" Height="400px" Width="400px">
<LocalReport ReportPath="Reports\KingsCourt.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="InvoiceRow" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="Rows"
TypeName="Accounts.Classes.Invoices"></asp:ObjectDataSource>
</form>
OriginalL'auteur cpoDesign | 2011-03-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez toujours utiliser ASP.NET WebForms avec MVC. Je suppose que c'est la seule façon de le faire.
Je vous ai préparé un échantillon pour vous ici.
Vous pouvez créer un dossier où vous allez mettre votre asp.net WebForm et le rapport (rdlc).
Je l'ai mis dans le même dossier que le schéma (xsd) et les données (xml), mais, évidemment, je suppose que vous allez utiliser la base de données.
J'ai cartographié la route vers le rapport(s) comme ceci:
Mise à JOUR:
J'ai préparé quelques code pour ASP.NET MVC3 (MvcReportViewerMVC3).
Il est à peu près la même avec quelques modifications mineures sur le formulaire en ligne: j'ai intégré le nouveau ReportViewer (10) et j'ai dû ajouter le ScriptManager à la même page:
J'ai changé la WebForm code de cause, il apparaît que l'événement page_load est appelé plein de fois:
Espère que cela aide.
Je crains que tout cela est la seule solution si vous souhaitez utiliser le serveur de contrôle. C'est un asp.net contrôle de serveur et ne peut pas être utilisé dans MVC. Plus ReportViewer utilise viewstate ... et vous n'avez pas que dans MVC. Si vous pensez que ma réponse est assez bon pour vous, pourriez-vous s'il vous plaît fermer 😉
pensez-vous qu'il peut être fait via ajax?
Vous pouvez, bien sûr. Le seul problème que je vois est ReportViewer utilise le script client donc je suppose que vous devez le charger dans un IFRAME. J'ai essayé quelque chose comme cela et cela fonctionne, mais il a quelques problèmes avec l'actualisation: <script type="text/javascript"> $(document).ready(function() { $("#CallReport").cliquez sur(function() { $(document.corps).append('<iframe id="myReport" width="100%" height="300">'); $('iframe#myReport').attr('src', '../../Rapports/Rapport.aspx'); }); }); </script>
MVC3 ici ... j'ai "controllerName ne peut pas être null" lors de l'utilisation de cette approche (la route est enregistré avant celui par défaut)
OriginalL'auteur LeftyX
J'en doute utilisation de reportviewer dans asp.net mvc est possible.
La meilleure chose que Vous pouvez faire est de retourner rapport rendu comme une image.
OriginalL'auteur Arnis Lapsa
Pavel, j'ai lutté un peu de temps avec cela. À la fin décidé de mettre en place mon propre ActionResult et de la diffusion d'un fichier PDF.
C'est mon action:
et c'est ma coutume ActionResult
Voir ma réponse à cette question pour un MVC3 version du code ci-dessus.
OriginalL'auteur LeftyX