Почему я получаю эту ошибку {Операция недействительна из-за текущего состояния объекта.} C#

Я создал отчет SSRS, который обобщает мои данные в виде данных подсчета и данных о затратах. В текстовых полях, в которых я показываю эти данные, есть настройка действия для открытия более подробного отчета с использованием параметров, переданных из сводного отчета. Эти отчеты функционируют по желанию при просмотре на сервере SSRS.

Теперь у меня есть веб-приложение, которое использует C# для управления вводом данных для этих отчетов, и я использую aspx ReportViewer для отображения этих отчетов в приложении. Проблема заключается в том, что если я открою сводный отчет из своего веб-приложения C #, а затем щелкну ссылку, чтобы открыть подробный отчет, экран изменится, и похоже, что он собирается открыть подробный отчет, но затем он просто сидит там и не отображает отчет.

Когда я запускаю приложение из Visual Studios на моем LocalHost, я получаю это сообщение об ошибке при попытке открыть сводный отчет; {"Операция недействительна из-за текущего состояния объекта."}

Вот код С#, который я использую:

 protected void Page_Load(object sender, EventArgs e)
{
    //Get the report server url from web.config
    String reportServerUrl = ConfigurationManager.AppSettings.Get("ReportServerUrl");
    ReportViewer1.ServerReport.ReportServerUrl = new System.Uri(reportServerUrl);

    String report = Request.QueryString["r"];
    if (report == "TransportTotals")
    {
        ReportViewer1.ServerReport.ReportPath = "/ExTraReports/TransportTotals";
        this.Title = "Transport Totals Report";
    }

Кто-нибудь может объяснить, что не так с отчетом?


person Perry    schedule 03.02.2017    source источник
comment
Какая строка вызывает ошибку?   -  person Code-Apprentice    schedule 03.02.2017
comment
Вот некоторые из них: в System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) в System.Web.Util.CalliEventHandlerDelegateProxy.Callback(отправитель объекта, EventArgs e) в System.Web. UI.Control.OnLoad(EventArgs e) в System.Web.UI.Control.LoadRecursive() в System.Web.UI.Page.ProcessRequestMain(логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)   -  person Perry    schedule 03.02.2017
comment
Пожалуйста, отредактируйте свой вопрос   -  person Code-Apprentice    schedule 03.02.2017


Ответы (1)


Я смог решить проблему. исправленный код ниже:

String report = Request.QueryString["r"];
    if (report == "TransportTotals" && ReportViewer1.ServerReport.ReportPath != "/ExTraReports/NEWClosedTransportsByStateAndAgencyTypeAndNameDetail")
    {
        ReportViewer1.ServerReport.ReportPath = "/ExTraReports/TransportTotals";
        this.Title = "Transport Totals Report";
    }

Мне пришлось проверять путь к отчету, который возвращается каждый раз при загрузке страницы, чтобы убедиться, что мы вызываем подробный отчет, у которого другой путь. Если это так, то блок if выходит из строя и открывается связанный отчет.

person Perry    schedule 03.02.2017