我在报告中添加了两个名为dtStartDate和dtEndDate的参数。我试图弄清楚如何在控制器上实现。目前,在尝试设置参数时会抛出错误。请指教,谢谢
以下是我到目前为止的代码:
public ActionResult DetailsReport()
{
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Content/Reports/Data.rdlc");
ReportParameter param0 = new ReportParameter("dtStartDate", "2014-01-28");
ReportParameter param1 = new ReportParameter("dtStartEnd", "2014-01-30");
localReport.SetParameters(new ReportParameter[] { param0, param1 });
ReportDataSource reportDataSource = new ReportDataSource("dsData", GetAllData());
localReport.DataSources.Add(reportDataSource);
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;
//The DeviceInfo settings should be changed based on the reportType
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>1in</MarginLeft>" +
" <MarginRight>1in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
//Render the report
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
Response.AddHeader("content-disposition", "attachment; filename=Data." + fileNameExtension);
return File(renderedBytes, mimeType);
}
public static List<vwDataReport> GetAllData()
{
var entities = new DataEntities();
var x = from c in entities.vwDataReport
select c;
return x.ToList();
}
答案 0 :(得分:1)
使用两个日期创建一个ViewModel,即
public class ReportModel
{
public DateTime StartDate { get; set; }
public DateTime StartEnd { get; set; }
}
在Get方法中初始化并发送回来,这将呈现日期选择屏幕,即
public ActionResult DetailsReport()
{
var model = new ReportModel();
model.StartDate = DateTime.Now;
model.StartEnd = DateTime.Now;
return View(model);
}
在视图中渲染控件以显示它们,即如果您使用类似这样的jQuery UI:
@model ReportModel
@using(Html.BeginForm()){
@Html.TextBoxFor(m => m.StartDate, String.Format("{0:dd/M/yy}", Model.StartDate),
new { @class = "datepicker datepicker-init" })
@Html.TextBoxFor(m => m.StartEnd, String.Format("{0:dd/M/yy}", Model.StartEnd),
new { @class = "datepicker datepicker-init" })
<input type="submit" value="submit" />
}
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script src="~/Scripts/jquery-ui-1.10.3.js"></script>
<script type="text/javascript">
$(".datepicker").datepicker({
minDate: 0,
dateFormat: 'dd/mm/y'
});
</script>
使用以下签名创建一个帖子操作,该签名将使模型返回所选日期,然后填写您的报告处理代码,其中......即:。
[HttpPost]
public ActionResult DetailsReport(ReportModel model)
{
...
var startDate = model.StartDate.ToString();
var startEnd = model.StartEnd.ToString();
ReportParameter param0 = new ReportParameter("dtStartDate", startDate);
ReportParameter param1 = new ReportParameter("dtStartEnd", startEnd);
...
}