Не удалось загрузить viewstate при использовании ReportViewer Asp.net - PullRequest
0 голосов
/ 31 октября 2018

Мне было поручено отобразить отчет rdl, который мне удалось получить благодаря программе просмотра отчетов Microsoft, однако при изменении параметров и попытке обновления отчета я получаю сообщение об ошибке Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request..

Вот просмотрщик отчетов в моем файле aspx,

<asp:ScriptManager ID="ScriptManager" runat="server"/>
                <asp:UpdatePanel ID="UpdatePanel" runat="server">
                    <ContentTemplate>
                        <rsweb:ReportViewer ID="ReportViewer" runat="server" ProcessingMode="Remote" Height="600px" Width="100%" ShowParameterPrompts="false" ShowToolBar="true"/>
                    </ContentTemplate>
                </asp:UpdatePanel>

Это моя кнопка, которую я использую для создания отчета

<dx:ASPxButton ID="btnBuildReport" CssClass="btn btn-primary btnBuildReport" runat="server" Text="Build Report" AutoPostBack="False" OnClick="OnBuildReportClick"/>

Это мой метод инициализации отчета - этот метод вызывается при загрузке страницы.

Private Sub InitilizeReport()
        ReportViewer.ProcessingMode = ProcessingMode.Remote
        Dim serverReport As ServerReport = ReportViewer.ServerReport
        serverReport.ReportServerUrl = New Uri(SERVERURL)
        serverReport.ReportPath = REPORTPATH
        serverReport.ReportServerCredentials = New ReportViewerCredentials(USERNAME, PASSWORD)
    End Sub

Это метод, который срабатывает при нажатии кнопки, добавляет параметры и обновляет отчет.

 Protected Sub OnBuildReportClick(sender As Object, e As EventArgs)
        Dim reportParameters As New ReportParameterCollection
        reportParameters.Add(New ReportParameter("Param1", PARAM1))
        reportParameters.Add(New ReportParameter("Param2", PARAM2))

        ReportViewer.ServerReport.SetParameters(reportParameters)
        ReportViewer.ServerReport.Refresh()
    End Sub

Теперь, как ни странно, метод не срабатывает, когда я нажимаю кнопку второй раз, я проверил, поставив там точку останова.

Я пытался добавить EnableViewState="false" к моему aspx, но ReportViewer выдает сообщение об ошибке и говорит, что ему нужно включить состояние просмотра.

...