sharpreportengine.cs

来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 580 行 · 第 1/2 页

CS
580
字号
			}
		}
		
		#endregion
		
		
		#region Preview
		///<summary>
		/// Opens the PreviewDialog as standalone, so, no need for Designer
		/// </summary>
		///<param name="fileName">Report's Filenema</param>
		/// <param name="/// <summary>
		/// send report to printer
		/// </summary>
		/// <param name="fileName">Path to ReportFile</param>
		
		public void PreviewStandartReport (string fileName) {
			if (fileName.Length == 0) {
				throw new ArgumentNullException("fileName");
			}
			PreviewStandartReport (fileName,null);
		}
		
		
		public void PreviewStandartReport (string fileName,ReportParameters reportParameters) {
			if (fileName.Length == 0) {
				throw new ArgumentNullException("fileName");
			}

			ReportModel model = null;
			AbstractRenderer renderer = null;
			try {
				model = ModelFromFile (fileName);
				if (CheckReportParameters (model,reportParameters)) {
					renderer = SetupStandartRenderer (model);
					if (renderer != null) {
						PreviewControl.ShowPreview(renderer,1.5,false);
					}
				}
			} catch (Exception) {
				throw;
			}
			
		}
		/// <summary>
		/// Preview a "PushModel - Report"
		/// </summary>
		/// <param name="fileName">Filename to the location of the ReportFile</param>
		/// <param name="dataTable">a Datatable, containing the data</param>
		public void PreviewPushDataReport (string fileName,DataTable dataTable) {
			if (String.IsNullOrEmpty(fileName)) {
				throw new ArgumentNullException("fileName");
			}
			if (dataTable == null) {
				throw new ArgumentNullException("dataTable");
			}
			ReportModel model = null;
			AbstractRenderer renderer = null;
			try {
				model = ModelFromFile (fileName);
				
				if (!CheckForPushModel(model)) {
					throw new SharpReportException ("PrintPushdataReport: No valid ReportModel");
				}
				
				renderer = this.SetupPushDataRenderer (model,dataTable);
				if (renderer != null) {
					PreviewControl.ShowPreview(renderer,1.5,false);
				}
			} catch (Exception) {
				
			}
		}
		
		#endregion
		
		#region Printing
		
		private void ReportToPrinter (AbstractRenderer renderer,ReportModel model) {
			if (renderer == null) {
				throw new NullReferenceException("SparpReportEngine:ReportToPrinter: No valid Renderer");
			}
			PrintDocument  doc = null;
			if (renderer.Cancel == false) {
				doc = renderer.ReportDocument;
				using (PrintDialog dlg = new PrintDialog()) {
					dlg.Document = doc;
//					MessageBox.Show (model.ReportSettings.UseStandartPrinter.ToString());
					if (model.ReportSettings.UseStandartPrinter == true) {
						dlg.Document.Print();
					} else {
						DialogResult result = dlg.ShowDialog();
						// If the result is OK then print the document.
						if (result==DialogResult.OK){
							dlg.Document.Print();
						}
					}
				}
			}
		}
		
		/// <summary>
		/// send a Standart (PullModel/FormSheet) Report to printer
		/// </summary>
		/// <param name="fileName">Path to ReportFile</param>
		/// <param name="renderTo">Type of renderer currently only "ToText" is implemented</param>

		public void PrintStandartReport (string fileName) {
			if (String.IsNullOrEmpty(fileName)) {
				throw new ArgumentNullException("fileName");
			}
			PrintStandartReport (fileName,null);
			
		}
		
		public void PrintStandartReport (string fileName,ReportParameters reportParameters) {
			if (String.IsNullOrEmpty(fileName)) {
				throw new ArgumentNullException("fileName");
			}
			
			ReportModel model = null;
			AbstractRenderer renderer = null;
			try {
				model = ModelFromFile (fileName);
				if (CheckReportParameters (model,reportParameters)) {
					renderer = SetupStandartRenderer (model);
					this.ReportToPrinter (renderer,model);
				}
			} catch (Exception) {
				throw;
			}
		}
		/// <summary>
		/// Print a PullModel Report
		/// </summary>
		/// <param name="fileName"></param>
		/// <param name="dataTable"></param>
		/// <param name="showPrintDialog">if set to true, show the <see cref="PrintDialog"></see>
		/// </param>
		
		public void PrintPushDataReport (string fileName,
		                                 DataTable dataTable,
		                                 bool showPrintDialog) {
			
			if (String.IsNullOrEmpty(fileName)) {
				throw new ArgumentNullException("fileName");
			}
			if (dataTable == null) {
				throw new ArgumentNullException("dataTable");
			}
			ReportModel model = null;
			AbstractRenderer renderer = null;
			try {
				model = ModelFromFile (fileName);
				if (!CheckForPushModel(model)) {
					throw new SharpReportException ("PrintPushdataReport: No valid ReportModel");
				}
				
				renderer = SetupPushDataRenderer (model,dataTable);
				this.ReportToPrinter(renderer,model);
				
			} catch (Exception) {
			}
			
			
		}
		/// <summary>
		/// Print a PullModel Report, if <see cref="UseStandartPrinter"></see> in
		/// <see cref="ReportSettings"></see> is true, the Report is send directly to the printer,
		///  otherwise, we show a <see cref="PrintDialog"></see>
		/// </summary>
		/// <param name="fileName"></param>
		/// <param name="dataTable"></param>
		public void PrintPushDataReport (string fileName,DataTable dataTable) {
			if (fileName.Length == 0) {
				throw new ArgumentNullException("fileName");
			}
			if (dataTable == null) {
				throw new ArgumentNullException("dataTable");
			}
			ReportModel model = null;
			AbstractRenderer renderer = null;
			
			try {
				model = ModelFromFile (fileName);
				if (!CheckForPushModel(model)) {
					throw new MissingModelException();
				}
				
				renderer = this.SetupPushDataRenderer (model,dataTable);
				this.ReportToPrinter(renderer,model);
				
			} catch (Exception) {
			}
		}
		
		
		#endregion
		
		
		
		
		#region Loading report
		/// <summary>
		/// Load's a <see cref="ReportModel"></see> from File using the
		/// <see cref="LoadModelVisitor"></see>
		/// </summary>
		/// <param name="fileName"></param>
		/// <returns><see cref="ReportModel"></see></returns>
		
		protected ReportModel ModelFromFile (string fileName) {
			if (String.IsNullOrEmpty(fileName)) {
				throw new ArgumentNullException("fileName");
			}
			
			try {
				ReportModel model = new ReportModel();
				SharpReportCore.LoadModelVisitor modelVisitor = new SharpReportCore.LoadModelVisitor(model,fileName);                                                                                    
				model.Accept (modelVisitor);
				return model;
			} catch (Exception) {
				throw;
			}
		}

		
		#endregion
		
		#region Properties
		///<summary>
		/// Use this Dialog for previewing a Report
		/// This Control is also used by the Designer
		/// </summary>
		
		public SharpReportCore.PreviewControl  PreviewControl  {
			get {
				if (this.previewControl == null) {
					previewControl = new PreviewControl();
				}
				return this.previewControl;
			}
		}
		
		public ConnectionObject ConnectionObject {
			get {
				return connectionObject;
			}
			set {
				connectionObject = value;
			}
		}
		
		#endregion
		
		#region IDisposable
		
		public void Dispose(){
			this.Dispose(true);
			GC.SuppressFinalize(this);
		}
		
		~SharpReportEngine(){
			Dispose(false);
		}
		
		protected virtual void Dispose(bool disposing){
			try {
				if (disposing) {
					// Free other state (managed objects).
					if (this.connectionObject != null) {
						this.connectionObject.Dispose();
					}
					if (this.dataManager != null) {
						this.dataManager.Dispose();
						this.dataManager = null;
					}
					if (this.previewControl != null) {
						this.previewControl.Dispose();
					}
				}
			} finally {
				// Release unmanaged resources.
				// Set large fields to null.
				// Call Dispose on your base class.
			}
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?