0

MVCアプリケーションとのレポート統合の要件がありました。コードは当初、私は、レポートサーバー上でホストされたサーバーレポート、などRDLファイルを使用していた MVC Report ViewerMVCReportViewer:レポートビューアのWebコントロールでは、WebフォームにSystem.Web.UI.ScriptManagerが必要です

をプレックスから

私はMVCレポートビューアを使用しています。レポートを読み込めました。

しかし、要件はサーバーレポートとしてホストするのではなく、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

ナゲットパッケージから追加されたには既にscriptタグがあります。

しかし、それでもまだ、それは例外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> 

は素晴らしいことだが。

+0

'ReportViewer'コントロールが実行される' ReportViewerWebForm.aspx'( 'ReportViewerForMvc'にバンドルされています)からASPXページコンテンツを表示することをお勧めします。 'ReportViewer'インスタンスはコードによって動的に生成されますか? –

+0

@ TetsuyaYamamotoこんにちは、私はReportViewerWebForm.aspxの内容で質問を更新しました –

+0

ASPXページの内容は素晴らしいatmなので、 'ReportViewerWebForm.aspx.cs'のコードビハインドの問題になるかもしれません。 'Page_Load'メソッドで' IsPostBack'チェックをインクルードしましたか? –

答えて

0

数日後、次の行自体が問題であることが判明しました。

reportViewer.DataBind(); 

正常に機能し始めた行が削除されました。レポートビューアは内部的にデータバインディングを処理しているようです。明示的にバインドする必要はありません。

関連する問題