如何使用数据集作为数据源来保留xtraReport的参数
本文关键字:保留 xtraReport 参数 数据源 何使用 数据集 | 更新日期: 2023-09-27 18:03:56
我有一个强类型数据集提供的devExpress xtraReport。只要我将两个参数硬编码到Actions中,它就会将数据加载到数据集中并显示在报告中。一旦我尝试让它将值从主页向下传递到部分,它就失败了。我的第一次尝试是通过ViewBag传递参数,不工作,所以切换到一个模型,仍然不能正常工作。
主页控制器
public ActionResult SubsequentVisitReport(int noteType = 1, int noteId = 9)
{
ViewBag.noteType = noteType;
ViewBag.noteId = noteId;
ReportParameters reportParamters = new ReportParameters();
reportParamters.noteType = noteType;
reportParamters.noteId = noteId;
return View(reportParamters);
}
主页cshtml -在编辑器中添加,以确保模型在那里(它确实)。有没有试过调用偏函数,无论是否使用'Model'
@model ReportParameters
@Html.EditorFor(m => m.noteId)
@Html.EditorFor(m => m.noteType)
@Html.HiddenFor(m => m.id)
@Html.HiddenFor(m => m.noteType)
@Html.HiddenFor(m => m.noteId)
@Html.Partial("_SubsequentVisitReport", Model)
部分的控制器-这不会从模型接收数据,我不明白为什么。模型不是空的,所有的值都是0(零)。
[HttpPost]
public ActionResult _SubsequentVisitReport(ReportParameters model)
{
int noteType = model.noteType;
int noteId = model.noteId;
rptSubsequentVisit report = new rptSubsequentVisit();
try { report.DataSource = getSubsequentVisitData(model.noteType, model.noteId).Tables[0]; }
catch { return RedirectToAction("Not_Authorized"); }
ViewData["Report"] = report;
return PartialView("_SubsequentVisitReport");
}
部分
的视图@model ReportParameters
@Html.HiddenFor(m => m.id)
@Html.HiddenFor(m => m.noteType)
@Html.HiddenFor(m => m.noteId)
@Html.DevExpress().DocumentViewer(settings =>
{
// The following settings are required for a Report Viewer.
settings.Name = "reportViewer1";
settings.Report = (rptSubsequentVisit)ViewData["Report"];
// Callback and export route values specify corresponding controllers and their actions.
// These settings are required as well.
settings.CallbackRouteValues = new { Controller = "Reports", Action = "_SubsequentVisitReport"};
settings.ExportRouteValues = new { Controller = "Reports", Action = "_SubsequentVisitReportExport" };
}).GetHtml()
数据需要通过局部保存,既可以加载注释以供查看,也可以用于导出功能。
我做错了什么,或者有另一个更好的方法来做到这一点?
谢谢,戴夫·k .
settings.CallbackRouteValues
对象告诉DocumentViewer在哪里请求实际的报告,并且它可以接受参数。不幸的是,这将是一个单独的请求,所以你不能发送你的模型,只有简单的值可以作为字符串传递。在这个例子中,他们为报告使用了一个自定义模型,但是该模型必须从每个操作中的原始值重新创建。
如果您将部分操作转换为接受整数参数:
public ActionResult _SubsequentVisitReport(int noteType, int noteId)
你应该能够将这些参数附加到CallbackRouteValues的末尾:
settings.CallbackRouteValues = new { Controller = "Reports",
Action = "_SubsequentVisitReport",
noteType = model.noteType,
noteId = model.noteId};