【Stimulsoft Reports Silverlight教程】在Designer中保存并加载报表
此示例显示如何将报表加载到设计器以及如何使用保存报表事件。
private void btLoadReport_Click(object sender, System.Windows.RoutedEventArgs e) { if (cbReports.SelectedItem != null) { System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly(); var stream = a.GetManifestResourceStream(string.Format("DesignerSaveLoad.ReportFiles.{0}.mrt", ((ComboBoxItem)cbReports.SelectedItem).Content.ToString())); StiReport report = new StiReport(); report.Load(stream); stream.Close(); stream.Dispose(); stream = null; report.CalculationMode = StiCalculationMode.Interpretation; report.RegBusinessObject("Data", "Data", new Data()); designer.Report = report; } }
您可以在应用程序初始化时将事件侦听器添加到StiOptions.Engine.GlobalEvents:
public MainPage() { ... StiOptions.Engine.GlobalEvents.SavingReportInDesigner += new Stimulsoft.Report.Design.StiSavingObjectEventHandler(GlobalEvents_SavingReportInDesigner); }
指定报表保存时要执行的操作:
private void GlobalEvents_SavingReportInDesigner(object sender, Stimulsoft.Report.Design.StiSavingObjectEventArgs e) { if (designer.Report == null) return; e.Processed = true; messageBox = new MessageBoxWindow(); messageBox.Closed += delegate { if (messageBox.Result == MessageBoxResult.Yes) { SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.Filter = "Report Files (*.mrt) | *.mrt"; if (saveDialog.ShowDialog() == true) { var stream = saveDialog.OpenFile(); StiXmlReportSLService saveService = new StiXmlReportSLService(); saveService.Save(designer.Report, stream); stream.Flush(); stream.Close(); stream.Dispose(); stream = null; } } messageBox = null; }; messageBox.Show(); }
下面的屏幕截图中,您可以看到示例代码的结果。