2016-06-03 7 views
1

Nicht sicher, ob dies der Ort ist, um Fragen zu stellen oder wenn jemand Erfahrung mit MVCReportViewer (https://github.com/ilich/MvcReportViewer) hat, aber ich habe Probleme damit, es mit meiner Anwendung zu arbeiten. Ich möchte einfach einige Parameter an den Bericht und die Berichts-URL an den Viewer übergeben, aber es funktioniert nicht. Wenn ich die erwartete URL eingeben und Parameter es funktioniert, aber alles dynamisch funktioniert nicht ...MVCReportViewer Hilfe - Parameter können nicht übergeben werden - ViewBag Problem

Hier ist, wie ich den Report nenne:

@Html.MvcReportViewerFluent(pReportURL).ReportParameters(new { StartingItem = pStartingItem, EndingItem = pEndingItem }).Attributes(new { Height = 500, Width = 1200, style = "border:none; background-color:white;" }).ControlSettings(new ControlSettings { ShowParameterPrompts = false }) 

Während ich die Werte mit ViewBags für die Variablen bin immer .

@{ 
var pReportURL = (string)ViewBag.reportURL; 
var pStartingItem = (string)ViewBag.StartingItem; 
var pEndingItem = (string)ViewBag.EndingItem; 
} 

stelle ich einige Haltepunkte und die Variablen werden immer die Werte zugewiesen, aber es scheint, sie sind nie in den Report geleitet zu werden. Ich erhalte nur einen Fehler, der besagt, dass der Bericht nicht angegeben ist, obwohl ich den Wert der URL mit meinen Haltepunkten sehen kann. Erkläre ich diese richtig? Ich bin neu bei MVC und dies schien der einfachste Weg, um dies zur Arbeit zu bringen, aber ich kämpfe jetzt.

EDIT1: Also nach ein paar mehr das Problem ist nicht mit dem Reportviewer, sondern mit, wie ich meine Variablen verwende. Wenn ich mein "var pReportURL = 'Report/ThisReport" deklariere, wird es funktionieren. Obwohl meine ViewBags in meinen Haltepunkten den richtigen Wert haben, muss ich sie falsch verwenden ... Was muss ich tun, um ViewBags-Werte als Variablen in meiner Ansicht oder etwas Ähnlichem zu verwenden?

+0

Nur eine wilde Schätzung deklarieren alle von ihnen als 'string' wie' string pReportURL = (string) ViewBag.reportURL; ' – Mairaj

Antwort

1

Diese Frage für jeden aufarbeiten, der MvcReportViewer verwendet und mit einem ähnlichen Problem kämpft ... Nicht sicher, ob dies der beste Weg ist, um dies zu arbeiten, aber es funktionierte für mich, also dachte ich, ich würde teilen.

Aus dem Lesen der Dokumente konnte ich ein Beispiel von jemandem finden, der etwas Ähnliches mit dem Übergeben von Werten von ihrem Controller an die Ansicht und das Verwenden dieser Werte als Parameter für den Bericht tat.

In meinem Controller übergeben ich einige Werte der Ansicht als TempData der folgenden Syntax

public ActionResult CurrentBomReport(CurrentBomViewModel model) 
{ 

//do some logic first... 
//declare parameters as tempdata. 
TempData["reporturlparam"] = model.reporturlparam; 
TempData["reportparam1"] = model.reportparam1; 
TempData["reportparam2"] = model.reportparam2; 

return View(model); 
} 

Dann meiner Meinung nach ...

@{ 
string reporturl = (string)TempData["reporturlparam"]; 

    var parameters = new List<KeyValuePair<string, object>> 
    { 
    new KeyValuePair<string, object>("NameOfReportParam1", (string)TempData["reportparam1"]), 
    new KeyValuePair<string, object>("NameOfReportParam2", (string)TempData["reportparam2"]) 
    }; 
} 

@Html.MvcReportViewerFluent(reporturl).ReportParameters(parameters).Attributes(new { Height = 500, Width = 500, style = "border:none; background-color:white;" }).ControlSettings(new ControlSettings { ShowParameterPrompts = false }) 

Dies schien die direkteste Methode, um um das zur Arbeit zu bringen.

Verwandte Themen