public int RenderReport(ReportControlSession session, string viewerInstanceIdentifier, PageCountMode pageCountMode, int pageNumber, InteractivityPostBackMode interactivityMode, string searchState, string replacementRoot, string hyperlinkTarget, string alertMessage, DeviceInfoCollection initialDeviceInfos, string browserMode, bool sizeToContent)
        {
            if (this.m_reportStream != null)
            {
                throw new InvalidOperationException();
            }
            this.m_session = session;
            this.ViewIteration++;
            this.m_pageNumber = pageNumber;

            this.m_viewerInstanceIdentifier = viewerInstanceIdentifier;
            this.m_alertMessage             = alertMessage;
            this.m_interactivityMode        = interactivityMode;
            bool useImageConsolidation     = !sizeToContent;
            NameValueCollection deviceInfo = this.CreateDeviceInfo(initialDeviceInfos, session.Report, pageNumber, searchState, replacementRoot, hyperlinkTarget, browserMode, useImageConsolidation, this.EnableHybrid);

            this.m_reportStream        = session.RenderReportHTML(deviceInfo, pageCountMode, out this.m_scrollScript, out this.m_pageStyles);
            this.m_autoRefreshInterval = session.Report.AutoRefreshInterval;
            int totalPages = session.Report.GetTotalPages();

            if (this.m_pageNumber > totalPages)
            {
                this.m_pageNumber = totalPages;
            }
            this.m_autoRefreshInterval = session.Report.AutoRefreshInterval;
            if (sizeToContent)
            {
                this.m_scrollScript = null;
            }
            string styleStreamName = LocalHtmlRenderer.GetStyleStreamName(pageNumber);
            string text            = default(string);

            byte[] streamImage = session.GetStreamImage(styleStreamName, (string)null, out text);
            this.m_styleBytesString = null;
            if (streamImage != null && streamImage.Length > 0)
            {
                Encoding encoding = new UTF8Encoding(false);
                this.m_styleBytesString = encoding.GetString(streamImage);
            }
            return(this.m_pageNumber);
        }
Esempio n. 2
0
        protected ReportDataOperation(IReportServerConnectionProvider connectionProvider, bool requiresFullReportLoad = true)
            : base(connectionProvider)
        {
            NameValueCollection requestParameters = new NameValueCollection();
            //HttpHandler.RequestParameters;
            bool flag = base.ProcessingMode == ProcessingMode.Local;

            if (base.IsUsingSession)
            {
                ReportHierarchy reportHierarchy = base.ReportHierarchy;
                int             clientStackSize = HandlerOperation.ParseRequiredInt(requestParameters, "ReportStack");

                ReportInfo reportInfo = reportHierarchy.Peek();
                if (flag)
                {
                    this.m_reportControlSession = reportInfo.LocalSession;
                }
                else
                {
                    //this.m_reportControlSession = reportInfo.ServerSession;
                }
            }
            else
            {
                if (flag)
                {
                    throw new HttpHandlerInputException(new NotSupportedException());
                }
                //ServerReport serverReport = base.CreateTempServerReport();
                //serverReport.LoadFromUrlQuery(requestParameters, requiresFullReportLoad);
                //this.m_reportControlSession = new ServerModeSession(serverReport);
            }
            int  culture          = HandlerOperation.ParseRequiredInt(requestParameters, "Culture");
            int  culture2         = HandlerOperation.ParseRequiredInt(requestParameters, "UICulture");
            bool useUserOverride  = HandlerOperation.ParseRequiredBool(requestParameters, "CultureOverrides");
            bool useUserOverride2 = HandlerOperation.ParseRequiredBool(requestParameters, "UICultureOverrides");

            Thread.CurrentThread.CurrentCulture   = new CultureInfo(culture, useUserOverride);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture2, useUserOverride2);
        }
        public static void Render(NameValueCollection deviceInfo, PageCountMode pageCountMode, ReportControlSession reportControlSession, AspNetCore.ReportingServices.Interfaces.CreateAndRegisterStream streamCallback, out string scrollScript, out string pageStyle)
        {
            TextWriter htmlTextWriter = null;

            try
            {
                deviceInfo.Add("OnlyVisibleStyles", "True");
                htmlTextWriter = LocalHtmlRenderer.CreateWriter(reportControlSession.Report.DisplayNameForUse, "text/html", streamCallback, AspNetCore.ReportingServices.Interfaces.StreamOper.CreateAndRegister);
                NameValueCollection      browserCaps = new NameValueCollection();
                ViewerRendererDeviceInfo viewerRendererDeviceInfo = new ViewerRendererDeviceInfo();
                viewerRendererDeviceInfo.ParseDeviceInfo(deviceInfo, new NameValueCollection());
                HTML5ViewerRenderer hTML5ViewerRenderer = new HTML5ViewerRenderer(reportControlSession, streamCallback, viewerRendererDeviceInfo, browserCaps, SecondaryStreams.Server, pageCountMode, null);
                hTML5ViewerRenderer.Render(htmlTextWriter);
                scrollScript = hTML5ViewerRenderer.FixedHeaderScript;
                //var stream=(streamCallback.Target as StreamCache).GetMainStream(true);
                //System.IO.StreamReader sr = new StreamReader(stream);
                //var html=sr.ReadToEnd();
                pageStyle = hTML5ViewerRenderer.PageStyle;
            }
            catch (LocalProcessingException)
            {
                throw;
            }
            catch (Exception renderingException)
            {
                throw renderingException;
            }
            finally
            {
                if (htmlTextWriter != null)
                {
                    htmlTextWriter.Flush();
                }
            }
        }