⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadmodelvisitor.cs

📁 SharpDevelop2.0.0 c#开发免费工具
💻 CS
字号:
//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version: 1.1.4322.2032
//
//     Changes to this file may cause incorrect behavior and will be lost if 
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------


using System;
using System.Xml;
using System.Windows.Forms;

using SharpReportCore;

	/// <summary>
	/// Fill's the ReportModel from File
	/// </summary>
	/// <remarks>
	/// 	created by - Forstmeier Peter
	/// 	created on - 03.03.2005 16:36:09
	/// </remarks>
namespace SharpReportCore {	
	public class LoadModelVisitor : SharpReportCore.AbstractModelVisitor {
		
		private ReportModel model;
		BaseItemFactory baseItemFactory;
		
		public LoadModelVisitor(ReportModel reportModel,
		                        string fileName):base(fileName){
			this.model = reportModel;
			baseItemFactory = new BaseItemFactory();
		}
		
		
		#region overrides
		public override void Visit(ReportModel reportModel) {
			if (reportModel == null) {
				throw new ArgumentNullException("reportModel");
			} else {
				XmlDocument xmlDoc;
				try {
					xmlDoc = XmlHelper.OpenSharpReport (base.FileName);
					reportModel.ReportSettings.SetSettings ((XmlElement)xmlDoc.DocumentElement.FirstChild);
					SetSections (xmlDoc);
				} catch (Exception ) {
					throw;
				}
			}
			
		}
		#endregion
		
		#region setsections
		void SetSections (XmlDocument doc) {
			XmlNodeList sectionNodes = doc.DocumentElement.ChildNodes;
			//Start with node(1)

			for (int i = 1;i < sectionNodes.Count ; i++ ) {
				XmlNode node = sectionNodes[i];
				
				if (node is XmlElement) {
					XmlElement sectionElem = (XmlElement)node;
					
					BaseSection baseSection = (BaseSection)model.SectionCollection.Find(sectionElem.GetAttribute("name"));
					
					XmlNodeList ctrlList = base.MakeSection(sectionElem,baseSection);
					SetReportItems(baseSection,null,ctrlList);
					
				}else {
					throw new System.Xml.XmlException ("Report : SetSection Wrong Node in Report");
				}
			}
		}
		
		
		void SetReportItems(BaseSection baseSection,
		                    IContainerItem parentContainer,XmlNodeList ctrlList) {
			
			BaseReportItem baseReportItem;
		
			foreach (XmlNode ctrlNode in ctrlList) {
				XmlElement ctrlElem = ctrlNode as XmlElement;
				if (ctrlElem != null) {
					IItemRenderer itemRenderer = null;
					try {
						itemRenderer = baseItemFactory.Create(ctrlElem.GetAttribute("basetype"));
						baseReportItem = base.MakeItem (ctrlElem,parentContainer,baseSection,itemRenderer);
						
						IContainerItem iContainer = baseReportItem as IContainerItem;
						
						if (iContainer != null) {
							XmlNodeList newList = ctrlNode.SelectNodes (base.NodesQuery);
							if (newList.Count > 0) {
								SetReportItems (baseSection,iContainer,newList);
							}
						}
						
					}
					catch (Exception ) {
						throw new UnkownItemException();
					}
				}
			}
		}
		
		#endregion
		
	}
}

⌨️ 快捷键说明

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