You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
432 lines
13 KiB
432 lines
13 KiB
/* |
|
* Erstellt mit SharpDevelop. |
|
* Benutzer: Peter Forstmeier |
|
* Datum: 03.01.2010 |
|
* Zeit: 17:43 |
|
* |
|
* Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. |
|
*/ |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Drawing; |
|
using System.IO; |
|
using System.Windows.Forms; |
|
|
|
using ICSharpCode.Reports.Core; |
|
using ICSharpCode.Reports.Core.Exporter.ExportRenderer; |
|
|
|
namespace SharpReportSamples |
|
{ |
|
/// <summary> |
|
/// Description of MainForm. |
|
/// </summary> |
|
public partial class MainForm : Form |
|
{ |
|
|
|
private TreeNode formNode; |
|
private TreeNode pullNode; |
|
private TreeNode iListNode; |
|
private TreeNode providerIndependent; |
|
private TreeNode customized; |
|
private ImageList imageList; |
|
|
|
public MainForm() |
|
{ |
|
// |
|
// The InitializeComponent() call is required for Windows Forms designer support. |
|
// |
|
InitializeComponent(); |
|
InitTree(); |
|
UpdateStatusbar (Application.StartupPath); |
|
this.previewControl1.Messages = new ReportViewerMessagesProvider(); |
|
} |
|
|
|
|
|
private void InitTree () |
|
{ |
|
string formSheetDir = @"\FormSheet\JCA.srd"; |
|
|
|
string startupPath = Application.StartupPath; |
|
string samplesDir = @"SharpDevelopReports\"; |
|
int i = startupPath.IndexOf(samplesDir); |
|
string startPath = startupPath.Substring(0,i + samplesDir.Length) + @"SampleReports\"; |
|
|
|
|
|
string pathToFormSheet = startPath + formSheetDir; |
|
|
|
this.formNode = this.treeView1.Nodes[0].Nodes[0]; |
|
this.pullNode = this.treeView1.Nodes[0].Nodes[1]; |
|
this.iListNode = this.treeView1.Nodes[0].Nodes[2]; |
|
this.providerIndependent = this.treeView1.Nodes[0].Nodes[3]; |
|
this.customized = this.treeView1.Nodes[0].Nodes[4]; |
|
|
|
AddNodesToTree (this.formNode,startPath + @"FormSheet\" ); |
|
AddNodesToTree (this.pullNode,startPath + @"PullModel\" ); |
|
AddNodesToTree (this.iListNode,startPath + @"IList\" ); |
|
AddNodesToTree (this.providerIndependent,startPath + @"ProviderIndependent\" ); |
|
AddNodesToTree (this.customized,startPath + @"Customized\" ); |
|
} |
|
|
|
|
|
private void AddNodesToTree (TreeNode parent,string path) |
|
{ |
|
if (!Directory.Exists(path)) { |
|
return; |
|
} |
|
string[] filePaths = Directory.GetFiles(path, "*.srd"); |
|
TreeNode reportNode = null; |
|
foreach (string fullPath in filePaths){ |
|
string fileName = Path.GetFileNameWithoutExtension(fullPath); |
|
reportNode = new TreeNode(fileName); |
|
reportNode.Tag = fullPath; |
|
parent.Nodes.Add(reportNode); |
|
} |
|
} |
|
|
|
|
|
|
|
private void UpdateStatusbar (string text) |
|
{ |
|
this.label1.Text = text; |
|
} |
|
|
|
|
|
private void RunStandardReport(string reportName) |
|
{ |
|
string s = Path.GetFileNameWithoutExtension(reportName); |
|
if (s == "ContributorsList" ) { |
|
this.RunContributors(reportName); |
|
} |
|
else if (s == "ContributorsListWithParameters"){ |
|
this.RunContributorsWithParameters(reportName); |
|
} |
|
|
|
else if (s == "NoConnectionReport") { |
|
this.RunProviderIndependent(reportName); |
|
} else if (s =="EventLog") |
|
this.RunEventLogger(reportName); |
|
|
|
else { |
|
|
|
ReportParameters parameters = ReportEngine.LoadParameters(reportName); |
|
|
|
if ((parameters != null)&& (parameters.SqlParameters.Count > 0)){ |
|
parameters.SqlParameters[0].ParameterValue = "I'm the Parameter"; |
|
} |
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
{ |
|
this.RunStandardReport(reportName); |
|
}; |
|
this.previewControl1.RunReport(reportName,parameters); |
|
} |
|
} |
|
|
|
|
|
#region ProviderIndependent |
|
private void RunProviderIndependent (string reportName) |
|
{ |
|
string conOleDbString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\SharpReport_TestReports\TestReports\Nordwind.mdb;Persist Security Info=False"; |
|
ReportParameters parameters = ReportEngine.LoadParameters(reportName); |
|
ConnectionObject con = ConnectionObject.CreateInstance(conOleDbString, |
|
System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb") ); |
|
|
|
parameters.ConnectionObject = con; |
|
parameters.SqlParameters[0].ParameterValue = "Provider Independent"; |
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
{ |
|
this.RunProviderIndependent(reportName); |
|
}; |
|
this.previewControl1.RunReport(reportName,parameters); |
|
} |
|
|
|
|
|
#endregion |
|
|
|
#region Contributors |
|
// |
|
/// <summary> |
|
/// Some values in the Datastructure are not set (means they are null), you can handle this values by setting |
|
/// the NullValue in the properties of this Item, or, you can use the SectionRenderingEvent as shown |
|
/// below |
|
/// </summary> |
|
/// <param name="fileName"></param> |
|
private void RunContributors (string fileName) |
|
{ |
|
ReportModel model = ReportEngine.LoadReportModel(fileName); |
|
|
|
// sorting is done here, but, be carefull, misspelled fieldnames will cause an exception |
|
|
|
//ReportSettings settings = model.ReportSettings; |
|
//settings.SortColumnCollection.Add(new SortColumn("First",System.ComponentModel.ListSortDirection.Ascending)); |
|
|
|
// Both variable declarations are valid |
|
|
|
ContributorCollection contributorCollection = ContributorsReportData.CreateContributorsList(); |
|
IDataManager dataManager = DataManager.CreateInstance(contributorCollection,model.ReportSettings); |
|
|
|
// List<Contributor> list = ContributorsReportData.CreateContributorsList(); |
|
// IDataManager dm = DataManager.CreateInstance(list,model.ReportSettings); |
|
|
|
|
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
{ |
|
this.previewControl1.RunReport(model,dataManager); |
|
}; |
|
this.previewControl1.RunReport(model,dataManager); |
|
} |
|
|
|
|
|
private void V1_RunContributorsWithParameters(string fileName) |
|
{ |
|
ReportModel model = ReportEngine.LoadReportModel(fileName); |
|
|
|
ReportParameters parameters = ReportEngine.LoadParameters(fileName); |
|
|
|
BasicParameter p1 = parameters.SqlParameters[0]; |
|
p1.ParameterValue ="Value of Parameter"; |
|
|
|
|
|
List<Contributor> list = ContributorsReportData.CreateContributorsList(); |
|
|
|
|
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
{ |
|
this.previewControl1.RunReport(model,list,parameters); |
|
}; |
|
this.previewControl1.RunReport(model,list,parameters); |
|
} |
|
|
|
|
|
// Can use this version for Parameters as well |
|
|
|
private void V2_RunContributorsWithParameters(string fileName) |
|
{ |
|
var model = ReportEngine.LoadReportModel(fileName); |
|
ReportParameters parameters = ReportEngine.LoadParameters(fileName); |
|
|
|
BasicParameter p1 = parameters.SqlParameters[0]; |
|
p1.ParameterValue ="Value of Parameter"; |
|
|
|
|
|
List<Contributor> list = ContributorsReportData.CreateContributorsList(); |
|
IDataManager dataManager = DataManager.CreateInstance(list,model.ReportSettings); |
|
|
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
{ |
|
this.previewControl1.RunReport(model,dataManager); |
|
}; |
|
this.previewControl1.RunReport(model,dataManager); |
|
} |
|
|
|
|
|
private void RunContributorsWithParameters(string fileName) |
|
{ |
|
var model = ReportEngine.LoadReportModel(fileName); |
|
ReportParameters parameters = ReportEngine.LoadParameters(fileName); |
|
|
|
BasicParameter p1 = parameters.SqlParameters[0]; |
|
p1.ParameterValue ="Value of Parameter"; |
|
|
|
|
|
List<Contributor> list = ContributorsReportData.CreateContributorsList(); |
|
|
|
IReportCreator creator = ReportEngine.CreatePageBuilder(model,list,parameters); |
|
|
|
creator.SectionRendering += PushPrinting; |
|
creator.BuildExportList(); |
|
using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(creator,SelectFilename(),true)) |
|
{ |
|
pdfRenderer.Start(); |
|
pdfRenderer.RenderOutput(); |
|
pdfRenderer.End(); |
|
} |
|
} |
|
|
|
|
|
|
|
private void RunEventLogger_Pdf (string fileName) |
|
{ |
|
Cursor.Current = Cursors.WaitCursor; |
|
EventLogger eventLogger = new EventLogger(fileName); |
|
Cursor.Current = Cursors.Default; |
|
|
|
this.imageList = eventLogger.Images; |
|
|
|
ReportModel model = ReportEngine.LoadReportModel(fileName); |
|
IReportCreator creator = ReportEngine.CreatePageBuilder(model,eventLogger.EventLog,null); |
|
creator.SectionRendering += PushPrinting; |
|
creator.BuildExportList(); |
|
using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(creator,SelectFilename(),true)) |
|
{ |
|
pdfRenderer.Start(); |
|
pdfRenderer.RenderOutput(); |
|
pdfRenderer.End(); |
|
} |
|
} |
|
|
|
|
|
private void RunEventLogger (string fileName) |
|
{ |
|
/* |
|
using (var provider = ProfilingDataSQLiteProvider.FromFile("ProfilingSession.sdps")){ |
|
var functions = provider.GetFunctions(0, provider.DataSets.Count - 1); |
|
foreach (CallTreeNode n in functions) { |
|
Console.WriteLine("{0}: {1} calls, {2:f2}ms", n.Name, n.CallCount, n.TimeSpent); |
|
} |
|
|
|
} |
|
*/ |
|
Cursor.Current = Cursors.WaitCursor; |
|
EventLogger eLog = new EventLogger(fileName); |
|
Cursor.Current = Cursors.Default; |
|
|
|
this.imageList = eLog.Images; |
|
|
|
ReportModel model = ReportEngine.LoadReportModel(fileName); |
|
IDataManager dataManager = DataManager.CreateInstance(eLog.EventLog,model.ReportSettings); |
|
|
|
// this.previewControl1.SectionRendering += PushPrinting; |
|
|
|
this.previewControl1.PreviewLayoutChanged += delegate (object sender, EventArgs e) |
|
|
|
{ |
|
this.previewControl1.RunReport(model,dataManager); |
|
}; |
|
this.previewControl1.RunReport(model,dataManager); |
|
} |
|
|
|
|
|
//Handles SectionRenderEvent |
|
int hour = 0; |
|
|
|
private void PushPrinting (object sender, SectionRenderEventArgs e ) |
|
{ |
|
string sectionName = e.Section.Name; |
|
|
|
if (sectionName == ReportSectionNames.ReportHeader) { |
|
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportHeader); |
|
} |
|
|
|
else if (sectionName == ReportSectionNames.ReportPageHeader) { |
|
Console.WriteLine("PushPrinting :" +ReportSectionNames .ReportPageHeader); |
|
} |
|
|
|
else if (sectionName == ReportSectionNames.ReportDetail){ |
|
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportDetail); |
|
// TimeWritten |
|
BaseDataItem time = e.Section.FindItem("BaseDataItem1") as BaseDataItem; |
|
if (time != null) { |
|
DateTime dateTime = Convert.ToDateTime(time.DBValue); |
|
|
|
int newhour = dateTime.Hour; |
|
if (hour != newhour) { |
|
hour = newhour; |
|
e.Section.Items[0].DrawBorder = true; |
|
e.Section.Items[0].FrameColor = Color.Black; |
|
// e.Section.Items[0].BackColor = Color.LightGray; |
|
time.DBValue = dateTime.Hour.ToString(); |
|
time.ContentAlignment = ContentAlignment.MiddleLeft; |
|
|
|
} else { |
|
time.DrawBorder = false; |
|
e.Section.Items[0].FrameColor = Color.White; |
|
// e.Section.Items[0].BackColor = Color.White; |
|
time.DBValue = dateTime.Minute.ToString() + ":" + dateTime.Second.ToString(); |
|
time.ContentAlignment = ContentAlignment.MiddleRight; |
|
|
|
} |
|
} |
|
// D:\SharpDevelop3.0_WorkingCopy\SharpDevelop\samples\SharpDevelopReports\SampleReports\EventLogger\Error.png |
|
// Image |
|
BaseDataItem dataItem = e.Section.FindItem("EntryType") as BaseDataItem; |
|
if (dataItem != null) { |
|
string str = dataItem.DBValue; |
|
Image image = null; |
|
if (str == "Information") { |
|
image = this.imageList.Images[1]; |
|
} else if (str == "Warning") { |
|
image = this.imageList.Images[2]; |
|
} else if (str == "Error") |
|
{ |
|
image = this.imageList.Images[0]; |
|
} |
|
|
|
if (image != null) |
|
{ |
|
BaseImageItem imageItem = e.Section.FindItem("BaseImageItem1") as BaseImageItem; |
|
if (imageItem != null) { |
|
imageItem.Image = image; |
|
} |
|
} |
|
} |
|
} |
|
|
|
else if (sectionName == ReportSectionNames.ReportPageFooter){ |
|
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportPageFooter); |
|
} |
|
|
|
else if (sectionName == ReportSectionNames.ReportFooter){ |
|
Console.WriteLine("PushPrinting :" + ReportSectionNames.ReportFooter); |
|
} |
|
|
|
else{ |
|
throw new WrongSectionException(sectionName); |
|
} |
|
} |
|
|
|
|
|
private string SelectFilename() |
|
{ |
|
using (SaveFileDialog saveDialog = new SaveFileDialog()){ |
|
|
|
saveDialog.FileName = "_pdf"; |
|
saveDialog.DefaultExt = "PDF"; |
|
saveDialog.ValidateNames = true; |
|
if(saveDialog.ShowDialog() == DialogResult.OK){ |
|
return saveDialog.FileName; |
|
} else { |
|
return String.Empty; |
|
} |
|
} |
|
} |
|
|
|
#endregion |
|
|
|
|
|
|
|
void TreeView1MouseDoubleClick(object sender, MouseEventArgs e) |
|
{ |
|
TreeNode selectedNode = this.treeView1.SelectedNode; |
|
if (selectedNode != null) { |
|
RunStandardReport(selectedNode.Tag.ToString()); |
|
} |
|
} |
|
|
|
/* |
|
void Button2Click(object sender, EventArgs e) |
|
{ |
|
// get Filename to save *.pdf |
|
string saveTo = this.SelectFilename(); |
|
|
|
// Create connectionobject |
|
parameters = ReportEngine.LoadParameters(reportName); |
|
ConnectionObject con = ConnectionObject.CreateInstance(this.conOleDbString, |
|
System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb") ); |
|
|
|
parameters.ConnectionObject = con; |
|
|
|
|
|
// create a Pagebuilder |
|
pageBuilder = ReportEngine.CreatePageBuilder(reportName,parameters); |
|
pageBuilder.BuildExportList(); |
|
|
|
using (PdfRenderer pdfRenderer = PdfRenderer.CreateInstance(pageBuilder,saveTo,true)){ |
|
pdfRenderer.Start(); |
|
pdfRenderer.RenderOutput(); |
|
pdfRenderer.End(); |
|
} |
|
} |
|
|
|
*/ |
|
} |
|
}
|
|
|