Wie kann ich mit RDLC reports mit dem ReportViewer-Steuerelement in ASP.Net MVC?

Ich bin ziemlich neu in ASP.Net MVC. Ich habe eine Anforderung und zeigt einen RDLC-Bericht in MVC.

Im Grunde meine Forderung als auch, was ich getan habe ist :-

Ich habe eine ReportController Erben APIController, die eine Methode hat, die ein DataSet zurückgibt. Dieser Datensatz wird gesendet, um das RDLC-Datei.

Dafür habe ich Folgendes getan, aber konnte nicht machen den Bericht zu arbeiten.

Habe ich eine model-Klasse mit der ReportParameter wie folgt:

public class ReportParameter 
{
    public DateTime DateFrom { get; set; }
    public DateTime DateTo { get; set; }
}

Habe ich folgende controller ReportViewController :

public class ReportViewController : Controller
{
    static readonly ReportController ctrl = new ReportController();

    public ActionResult GenerateReport()
    {
        return View();
    }

    [HttpPost]
    public ActionResult GenerateReport(ReportParameterSalesOrder param)
    {
        if (ModelState.IsValid)
        {
            Helpers.DataLayer dl = new Helpers.DataLayer();
            if (param.DateFrom != null)
            {
                DateTime DateFrom = Convert.ToDateTime(param.DateFrom);
                DateTime DateTo = Convert.ToDateTime(param.DateTo);

                string fdate = DateFrom.ToString("yyyy/MM/dd");
                string tdate = DateTo.ToString("yyyy/MM/dd");

                Session["ReportSales"] = ctrl.ReportSales(param);
            }

            return Redirect(Url.Action("ViewReport", "ReportView"));
        }
        return View();
    }
    public ActionResult ViewReport()
    {
         return View();
    }

}

Habe ich einen API-Controller ReportController, deren Objekt wurde in der oben ReportViewerController um ein DataSet zu generieren und füllen Sie die RDLC-Bericht. Die API Controller:

public class ReportController : ApiController
{

    static readonly IReportRepository repository = new ReportRepository();

    [ActionName("ReportSales")]
    public DataSet ReportSales(ReportParameterSalesOrder paramSO)
    {
        DataSet item = repository.ReportSales(paramSO);
        if (item == null)
        {
            throw new HttpResponseException(HttpStatusCode.NotFound);
        }
        return item;
    }
}

Habe ich zwei Ansichten GenerateReport.aspx und ViewReport.aspx. Die GenerateReport.aspx ist unten angegeben:

<table style="width: 40%;">
              <tr>
                  <td class="style1">
                      <h3>
                          <asp:Label ID="Label1" runat="server" Text="From Date"></asp:Label></h3>
                  </td>
                  <td>
                      <%=@Html.EditorFor(a=> a.DateFrom, new{id="startDate",style="width:250px;"}) %>
                      <%=@Html.ValidationMessageFor(a => a.DateFrom)%>
                  </td>
              </tr>
              <tr>
                  <td class="style1">
                      <h3>
                          <asp:Label ID="Label2" runat="server" Text="To Date"></asp:Label></h3>
                  </td>
                  <td>
                      <%=@Html.EditorFor(a => a.DateTo, new { id = "ToDate", style = "width: 250px;" })%>
                      <%=@Html.ValidationMessageFor(a => a.DateTo)%>
                  </td>
              </tr>
              <tr>
                  <td class="style1">
                      &nbsp;
                  </td>
                  <td>
                      &nbsp;
                  </td>
              </tr>
              <tr>
                  <td class="style1">
                      &nbsp;
                  </td>
                  <td>
                      <input id="btnsearch" class="button" type="submit" value="Show" />
                  </td>
              </tr>
          </table>

Den ViewReport.aspx ist unten angegeben:

 <center style="width: 974px">
      <iframe id="myReport" width="100%" height="450px" src="ReportViewer.aspx">

        </iframe></center>

Ich habe ein Dataset.xsd, eine rdlc-Datei und eine aspx-Seite zu fügen Sie die rdlc-Datei.

Aber ich kann nicht damit es funktioniert. Wie kann ich den Bericht anzuzeigen, oder wie kann ich das Auffüllen des dataset, die ich empfangen, die von dem Controller zu dem Bericht ?

Die ViewReport.aspx verwendet in der iframe werden müssen, um eine gute altmodische web-Formular mit code-behind - z.B. das DataSet im code hinter ViewReport.aspx.cs. Was kann man wohl tun ist, übergeben Sie die Daten aus dem MVC Controller über die Session[] variable?
Die ViewReport.aspx nicht über eine code-behind-Datei. Können Sie erklären, ein wenig mehr ?

InformationsquelleAutor Nubicus | 2015-01-01

Schreibe einen Kommentar