Отсутствие вложенных отчетов при перемещении RDLC на сервер - PullRequest
1 голос
/ 01 февраля 2011

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

Я считаю, что событие SubreportProcessing не запускается, поскольку я не вижу запуска хранимых процедур из SQL Server Profiler.Вот мой код, который я использую.

private void RunReport(string strFormat, int PlanID)
    {
        const string reportrdlc = "Reports\\Report_All_Sections.rdlc";
        LocalReport report = new LocalReport {ReportPath = Server.MapPath(reportrdlc)};
        report.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));
        report.DataSources.Clear();
        report.SubreportProcessing += SetSubDataSource;

        report.DataSources.Add(new ReportDataSource("DataSet_usp_GetSD", _wpt.Get_SD(PlanID).Copy()));

        report.Refresh();

        string mimeType;
        string encoding;
        string fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] pdfContent = report.Render(strFormat, null, out mimeType, out encoding,
                    out fileNameExtension, out streams, out warnings);

        System.IO.MemoryStream stream = new System.IO.MemoryStream(pdfContent);
        Response.ContentType = strFormat == "EXCEL" ? "application/vnd.ms-excel" : "application/pdf";

        Response.BinaryWrite(stream.ToArray());
        Response.Flush();
        Response.Close();
        stream.Close();

    }
    public void SetSubDataSource(object sender, SubreportProcessingEventArgs e)
    {
        int PlanID = 1;
        if (Request.QueryString["PlanID"] != null)
        {
            try
            {
                PlanID = Convert.ToInt32(Request.QueryString["PlanID"]);
            }
            catch (Exception Ex)
            {
                PlanID = 1;
            }
        }
        switch (e.ReportPath)
        {
            case "Report_All_Mentor":
                e.DataSources.Add(new ReportDataSource("DataSet_usp_GetMC", _wpt.Get_MC(PlanID).Copy()));
                break;
            case "Report_All_Intern":
                e.DataSources.Add(new ReportDataSource("DataSet_usp_GetEA", _wpt.Get_EA(PlanID).Copy()));
                break;
        }


    }

1 Ответ

1 голос
/ 17 февраля 2014

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

Возможно ли, что ваше событие SubreportProcessing действительно запускается, но в вашемоператор switch ни в одном случае не соответствует полному пути, указанному в параметре reportPath.

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

...