可以,参考本地示例:C:\Users\lenkaguo\Documents\GrapeCity Samples\ActiveReports 11\Professional\ActiveReportsWithMVC\C#
示例中给出的Controller 运行时绑定数据源
- using System.Web.Mvc;
- using GrapeCity.ActiveReports.Samples.ActiveReportsWithMVC.Models;
- using GrapeCity.ActiveReports.Samples.ActiveReportsWithMVC.Reports;
- using System.IO;
- namespace GrapeCity.ActiveReports.Samples.ActiveReportsWithMVC.Controllers
- {
- public class HomeController : Controller
- {
- private object _reportdata = null;
- /// <summary>
- /// Returns view Index.cshtml
- /// Passes the Entire Customers list to its model
- /// </summary>
- /// <returns>Index.cshtml</returns>
- public ActionResult Index()
- {
- return View("Index", Repository.GetCustomers());
- }
- /// <summary>
- /// Start method
- /// </summary>
- /// <returns></returns>
- public ActionResult Start()
- {
- return Index();
- }
- /// <summary>
- /// Returns View Details.cshtml
- /// </summary>
- /// <param name="id">Customer ID</param>
- /// <returns>Details.cshtml</returns>
- public ActionResult Details(string id)
- {
- return View("Details",Repository.GetCustomer(id) );
- }
- /// <summary>
- /// Returns View Viewer.cshtml
- /// </summary>
- /// <param name="id">Customer id</param>
- /// <param name="reporttype">Section/Page</param>
- /// <returns>Viewer.cshtml</returns>
- public ActionResult ViewReport(string id,string reporttype)
- {
- return View("Viewer", new ReportDescriptor { Id = id, Type = reporttype });
- }
- /// <summary>
- /// Generates Separate Views for Section and Page Reports
- /// </summary>
- /// <param name="reportdesc"></param>
- /// <returns>WebViewer.ascx</returns>
- public ActionResult GetReport(ReportDescriptor reportdesc)
- {
- object report = null;
- switch (reportdesc.Type)
- {
- case "Section":
- report = new OrderReport {DataSource= Repository.GetOrders(reportdesc.Id) };
- break;
- case "Page":
- _reportdata = Repository.GetDetails(reportdesc.Id);
- report = new PageReport(new FileInfo(Server.MapPath("~/Reports/OrderDetailsReport.rdlx")));
- ((PageReport)(report)).Document.LocateDataSource += Document_LocateDataSource;
- break;
- }
- ViewData["Report"] = report;
- return PartialView("WebViewer");
- }
- void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
- {
- args.Data = _reportdata;
- }
- }
- }
复制代码
|