private void SaveGeneratedReportItemInstance() { if (m_dynamicWidth != null || m_dynamicHeight != null) { return; } OnDemandProcessingContext odpContext = base.RenderingContext.OdpContext; Microsoft.ReportingServices.ReportIntermediateFormat.ReportSnapshot reportSnapshot = odpContext.OdpMetadata.ReportSnapshot; IChunkFactory chunkFactory = odpContext.ChunkFactory; if (CriDef.RepeatWith == null) { string text = CreateChunkName(); using (Stream stream = chunkFactory.CreateChunk(text, Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.GeneratedReportItems, null)) { new IntermediateFormatWriter(stream, odpContext.GetActiveCompatibilityVersion()).Write(m_generatedReportItem.Instance); stream.Flush(); } reportSnapshot.AddGeneratedReportItemChunkName(GetGeneratedInstanceChunkKey(), text); } else { ImageInstance imageInstance = (ImageInstance)m_generatedReportItem.Instance; reportSnapshot.AddImageChunkName(name: imageInstance.StreamName = ImageHelper.StoreImageDataInChunk(Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.Image, imageInstance.ImageData, imageInstance.MIMEType, base.RenderingContext.OdpContext.OdpMetadata, base.RenderingContext.OdpContext.ChunkFactory), definitionKey: GetGeneratedInstanceChunkKey()); } }
private void GenerateReportItemDefinition() { m_generatedReportItem = null; ICustomReportItem controlInstance = base.RenderingContext.OdpContext.CriProcessingControls.GetControlInstance(CriDef.Type, base.RenderingContext.OdpContext.ExtFactory); if (controlInstance == null) { return; } try { controlInstance.GenerateReportItemDefinition(this); } catch (Exception ex) { base.RenderingContext.ErrorContext.Register(ProcessingErrorCode.rsCRIProcessingError, Severity.Warning, Name, Type); Global.Tracer.TraceException(TraceLevel.Error, RPRes.rsCRIProcessingError(Name, Type) + " " + ex.ToString()); return; } if (m_generatedReportItem == null) { base.RenderingContext.ErrorContext.Register(ProcessingErrorCode.rsCRIRenderItemNull, Severity.Warning, CriDef.ObjectType, Name, Type); return; } m_generatedReportItem.ConstructReportItemDefinition(); m_generatedReportItem.CriGenerationPhase = CriGenerationPhases.None; string text = CreateChunkName(); OnDemandProcessingContext odpContext = base.RenderingContext.OdpContext; Microsoft.ReportingServices.ReportIntermediateFormat.ReportSnapshot reportSnapshot = odpContext.OdpMetadata.ReportSnapshot; using (Stream stream = odpContext.ChunkFactory.CreateChunk(text, Microsoft.ReportingServices.ReportProcessing.ReportProcessing.ReportChunkTypes.GeneratedReportItems, null)) { IntermediateFormatWriter intermediateFormatWriter = new IntermediateFormatWriter(stream, odpContext.GetActiveCompatibilityVersion()); Microsoft.ReportingServices.ReportIntermediateFormat.Visibility visibility = m_generatedReportItem.ReportItemDef.Visibility; m_generatedReportItem.ReportItemDef.Visibility = null; intermediateFormatWriter.Write(m_generatedReportItem.ReportItemDef); m_generatedReportItem.ReportItemDef.Visibility = visibility; stream.Flush(); } reportSnapshot.AddGeneratedReportItemChunkName(GetGeneratedDefinitionChunkKey(), text); }