MVC应用程序中的报表查看器11中的分页问题

时间:2015-02-20 06:52:44

标签: asp.net-mvc pagination reportviewer

我使用ReportViewer 11在iframe中显示报表(aspx页面加载到iframe中)。它正确显示第一页。但是当我点击下一页时,它会再次加载第一页。即使我手动输入页码到文本框中,它也仅加载第一页。看起来,它并没有在服务器端触发pagenavigation事件。如果我在后面的代码中将currentpage属性设置为2,那么无论我提供什么设置,它都只加载第1页。 搜索了几天。没有解决方案。

任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:0)

应用此逻辑

  1. 将记录存储在container1
  2. 将记录传递给container2
  3. 从container2
  4. 打印5条记录(或可能更多)
  5. 当按下“next”按钮时,从container2
  6. 打印下一个5
  7. 等等。
  8. 我不知道这是否会对您有所帮助,但数据库中的记录可以通过这种方式进行分页。

答案 1 :(得分:0)

我也试过这个逻辑。但主要问题是,即使按下“下一步”按钮,ReportViewer.CurrentPage也始终为0(在我的情况下)。所以它将再次显示container1记录。这是我的代码:

public void SetReportData(ref ReportViewer objRptVwr, ReportParameter[] rptParam, string moduleName, string reportName, string dsName, System.Data.DataTable dtFinal){ 
        objRptVwr.Reset();
        objRptVwr.ProcessingMode = ProcessingMode.Local;
        objRptVwr.LocalReport.ReportPath = HttpContext.Current.Server.MapPath("~/ReportViewer/" + moduleName + "/" + reportName + ".rdlc");

        if (rptParam != null)
            objRptVwr.LocalReport.SetParameters(rptParam);

        objRptVwr.ShowPrintButton = true;
        objRptVwr.ShowParameterPrompts = true;
        objRptVwr.AsyncRendering = false;
        objRptVwr.InteractivityPostBackMode = InteractivityPostBackMode.AlwaysSynchronous;
        objRptVwr.ShowBackButton = true;
        objRptVwr.SizeToReportContent = false;
        objRptVwr.PageCountMode = PageCountMode.Actual;
        objRptVwr.ShowExportControls = true;
        objRptVwr.ShowPageNavigationControls = true;
        objRptVwr.ShowToolBar = true;
        objRptVwr.ShowWaitControlCancelLink = false;
        objRptVwr.ShowZoomControl = true;
        objRptVwr.LocalReport.EnableExternalImages = true;
        objRptVwr.ExportContentDisposition = ContentDisposition.AlwaysInline;        
        ReportDataSource reportDataSource = new ReportDataSource(dsName, (System.Data.DataTable)dtFinal);
        objRptVwr.LocalReport.DataSources.Clear();
        objRptVwr.LocalReport.DataSources.Add(reportDataSource);
        objRptVwr.LocalReport.Refresh();
    }

答案 2 :(得分:0)

我做了什么,生成的按钮将根据列表大小。 每个按钮(可能是li标签)将包含一个包含0,5,10之类值的文本字段,依此类推(如果每页有5个元素)。

单击一个按钮,我获得该文本字段的值(例如索引)并将结果集位置移动到索引并打印最多5个元素的记录。