需要將報告與MVC應用程序集成。MVCReportViewer:報告查看器Web控件需要Web窗體上的System.Web.UI.ScriptManager
我使用MVC報表查看器從代碼叢 MVC Report Viewer
起初,我使用RDL文件服務器報告,這是報表服務器上託管。我能夠加載報告。
但是要求不是將其作爲服務器報告託管,而是將rdl文件添加爲本地報告並在運行時加載它。
我做了代碼更改如下,以加載它作爲本地報告。
ReportViewer reportViewer = new ReportViewer();
reportViewer.ProcessingMode = ProcessingMode.Local;
var dataSet = this.FillDataSet(reportModel.ReportParameters);
reportViewer.LocalReport.ReportPath = string.Format(@"{0}Reports\{1}.rdlc", this.Request.MapPath(this.Request.ApplicationPath), reportModel.ReportName);
reportViewer.LocalReport.DataSources.Clear();
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DS_Report", dataSet.Tables[0]));
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DS_ChartforSalesRep", dataSet.Tables[0]));
reportViewer.ShowParameterPrompts = false;
reportViewer.DataBind();
reportViewer.LocalReport.Refresh();
reportViewer.ReportError += this.OnLoadReportError;
this.ViewBag.ReportViewer = reportViewer;
將數據加載並填充到數據集中,然後將數據集提供給報告。
我在這行
reportViewer.DataBind();
試着在網上找一些幫助得到一個例外,其中大部分建議添加腳本標記如下
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
幾個環節 - Link 1 - Link 2 - Link 3
從nuget包獲取的已具有腳本標記。
但儘管如此,它拋出異常The Report Viewer Web Control requires a System.Web.UI.ScriptManager on the web form
編輯1:ReportViewerWebForm.aspx
的內容<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="ReportViewerWebForm.aspx.cs" Inherits="ReportViewerForMvc.ReportViewerWebForm" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body style="margin: 0px; padding: 0px;">
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="ReportViewerForMvc" Name="ReportViewerForMvc.Scripts.PostMessage.js" />
</Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server"></rsweb:ReportViewer>
</div>
</form>
</body>
</html>
將是巨大的,如果有人可以幫助我在此。
我建議你從'ReportViewer'控件發生的'ReportViewerWebForm.aspx'(與ReportViewerForMvc捆綁在一起)顯示ASPX頁面內容。 ReportViewer實例是否由代碼動態生成? –
@TetsuyaYamamoto嗨,我已經更新了ReportViewerWebForm.aspx –
的內容的問題似乎ASPX頁面內容是很好的atm,因此它可能會變成「ReportViewerWebForm.aspx.cs」內的代碼隱藏問題。你是否在'Page_Load'方法中包含'IsPostBack'檢查? –