MVCReportViewer: для веб-элемента управления Report Viewer требуется System.Web.UI.ScriptManager в веб-форме

Возникла необходимость интеграции отчетов с приложением MVC.

Я использую средство просмотра отчетов MVC из plex кода.

Первоначально я использовал файл 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>

Несколько ссылок - Ссылка 1 - Ссылка 2 - Ссылка 3

ReportViewerWebForm.aspx который добавляется из пакета nuget, уже имеет тег 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>

Было бы здорово, если бы кто-то мог помочь мне в этом.

1 ответ

После нескольких дней попадания и испытания обнаружили, что следующая строка сама по себе была проблемой.

reportViewer.DataBind();

Убрал строку и все стало работать нормально. Кажется, средство просмотра отчетов внутренне обрабатывает привязку данных. Не нужно явно связывать это.

Другие вопросы по тегам