Jestem całkiem nowy w ASP.Net MVC. Mam wymóg pokazania raportu opartego na RDLC w MVC.Jak mogę używać raportów RDLC z formantem ReportViewer w ASP.Net MVC?
Zasadniczo mój wymóg, jak również to, co zrobiłem to: -
Mam ReportController dziedziczenie APIController, która ma metodę, która zwraca DataSet. Ten zestaw danych jest wysyłany do pliku RDLC.
W tym celu zrobiłem co następuje, ale nie mogłem sprawić, by raport działał.
Stworzyłem klasę modelu o nazwie ReportParameter następująco:
public class ReportParameter
{
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
}
Mam następujący kontrolera 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();
}
}
mam API Controller ReportController którego obiekt został stworzony w wyżej ReportViewerController, aby wygenerować DataSet i wypełnić raport RDLC. Kontroler API to:
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;
}
}
Mam dwa widoki GenerateReport.aspx i ViewReport.aspx. GenerateReport.aspx podano poniżej:
<table style="width: 40%;">
<tr>
<td class="style1">
<h3>
<asp:Label ID="Label1" runat="server" Text="From Date"></asp:Label></h3>
</td>
<td>
<%[email protected](a=> a.DateFrom, new{id="startDate",style="width:250px;"}) %>
<%[email protected](a => a.DateFrom)%>
</td>
</tr>
<tr>
<td class="style1">
<h3>
<asp:Label ID="Label2" runat="server" Text="To Date"></asp:Label></h3>
</td>
<td>
<%[email protected](a => a.DateTo, new { id = "ToDate", style = "width: 250px;" })%>
<%[email protected](a => a.DateTo)%>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td>
<input id="btnsearch" class="button" type="submit" value="Show" />
</td>
</tr>
</table>
The ViewReport.aspx podano poniżej:
<center style="width: 974px">
<iframe id="myReport" width="100%" height="450px" src="ReportViewer.aspx">
</iframe></center>
Dodałem Dataset.xsd, plik RDLC i strony aspx dodać plik RDLC .
Ale nie mogę sprawić, żeby działało. Jak wyświetlić raport lub jak wypełnić zestaw danych, które otrzymuję od kontrolera do raportu?
"WidokReport.aspx" użyty w elemencie iframe musi być staromodnym formularzem internetowym z kodem za - np. ustaw DataSet w kodzie za 'ViewReport.aspx.cs'. Prawdopodobnie możesz przekazać dane z kontrolera MVC za pomocą zmiennej 'Session []'? – StuartLC
Plik ViewReport.aspx nie ma kodu znajdującego się za plikiem. Czy możesz wyjaśnić trochę więcej? – Nubicus