如何使用数据集作为数据源来保留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 .

如何使用数据集作为数据源来保留xtraReport的参数

settings.CallbackRouteValues对象告诉DocumentViewer在哪里请求实际的报告,并且它可以接受参数。不幸的是,这将是一个单独的请求,所以你不能发送你的模型,只有简单的值可以作为字符串传递。在这个例子中,他们为报告使用了一个自定义模型,但是该模型必须从每个操作中的原始值重新创建。

如果您将部分操作转换为接受整数参数:

public ActionResult _SubsequentVisitReport(int noteType, int noteId)

你应该能够将这些参数附加到CallbackRouteValues的末尾:

settings.CallbackRouteValues = new { Controller = "Reports", 
                                     Action = "_SubsequentVisitReport",
                                     noteType = model.noteType,
                                     noteId = model.noteId};