loadreportvisitor.cs
来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 132 行
CS
132 行
//------------------------------------------------------------------------------
// <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>
//------------------------------------------------------------------------------
/// <summary>
/// Loads a ReportFile and set it's Values in the ReportDesigner
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 02.12.2004 22:44:39
/// </remarks>
using System;
using System.Xml;
using System.ComponentModel;
using System.Globalization;
using SharpReportCore;
using SharpReport.Visitors;
using SharpReport.Designer;
using SharpReport.ReportItems;
namespace SharpReport.Visitors {
public class LoadReportVisitor : SharpReportCore.AbstractModelVisitor {
SharpReport.Designer.BaseDesignerControl baseDesigner;
IDesignableFactory designableFactory ;
public LoadReportVisitor(string fileName):base(fileName) {
designableFactory = new IDesignableFactory();
}
/// <summary>
/// Loads ReportDefinition from File and set the values in the SharpReportDesigner
/// </summary>
/// <param name='designer'>SharpReportDesigner</param>
public override void Visit(System.Windows.Forms.Control designer){
if (designer == null) {
throw new ArgumentNullException("designer");
}
this.baseDesigner = designer as SharpReport.Designer.BaseDesignerControl;
if (this.baseDesigner == null) {
throw new ArgumentException("designer");
}
XmlDocument xmlDoc;
try {
xmlDoc = XmlHelper.OpenSharpReport (base.FileName);
SetDesigner (xmlDoc);
AdjustSectionsWidth();
} catch (Exception ) {
throw ;
}
}
private void AdjustSectionsWidth() {
foreach (ReportSection section in baseDesigner.SectionsCollection) {
section.VisualControl.Width = baseDesigner.ReportModel.ReportSettings.PageSettings.Bounds.Width;
if (section.SectionMargin == 0) {
section.SectionMargin = baseDesigner.ReportModel.ReportSettings.PageSettings.Bounds.Left;
}
}
}
private void SetDesigner (XmlDocument doc){
this.baseDesigner.ReportModel.ReportSettings.SetSettings ((XmlElement)doc.DocumentElement.FirstChild);
SetSections (doc);
}
private 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];
XmlElement sectionElem = node as XmlElement;
if (sectionElem != null) {
BaseSection baseSection = (BaseSection)baseDesigner.ReportModel.SectionCollection.Find(sectionElem.GetAttribute("name"));
XmlNodeList ctrlList = base.MakeSection(sectionElem,baseSection);
SetReportItems(baseSection,null,ctrlList);
} else {
throw new MissingSectionException();
}
}
}
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 = designableFactory.Create(ctrlElem.GetAttribute("type"));
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();
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?