private void OnSaveClick(object sender, RoutedEventArgs e) { var stringName = tbReportName.Text; var isShowChannelSelector = CheckBoxChannels.IsChecked.GetValueOrDefault(); if (string.IsNullOrEmpty(stringName) || stringName == "<Новый отчет>") { var businessObjects = StiBusinessObjectHelper.GetUsedBusinessObjectsNames(DesignerControl.Report); if (businessObjects == null || businessObjects.Count == 0) { Manager.UI.ShowMessage("Задайте осмысленное название отчета"); return; } foreach (var key in businessObjects.Keys) { var businessObject = businessObjects[key]; //Тип бизнес объекта в отчете stringName = tbReportName.Text = businessObject.ToString(); break; //Имеет смысл использовать только один бизнес объект в отчете } } var data = new MemoryStream(); DesignerControl.Report.Save(data); var reportInfo = new TReportInfo { ReportUn = _reportUn, StringName = stringName, UserId = Manager.User.User_ID, Data = data.ToArray().EncodeBuffer(), DateRangeMode = DateRangeMode, TreeMode = TreeMode, IsShowChannelSelector = isShowChannelSelector, }; data.Dispose(); LayoutGrid.RunBackgroundAsync <string>("SaveReport", reportUn => { if (!string.IsNullOrEmpty(reportUn)) { _reportUn = reportUn; Manager.UI.ShowMessage("Отчет успешно сохранен"); } }, EnumServiceType.StimulReport, reportInfo); }
/// <summary> /// Основная процедура формирования отчета /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void WCFRenderReport(object sender, Stimulsoft.Report.Events.StiWCFEventArgs e) { if (!Equals(sender, DesignerControl)) { return; } var businessObjects = StiBusinessObjectHelper.GetUsedBusinessObjectsNames(DesignerControl.Report); _xml = e.Xml; if (businessObjects == null || businessObjects.Count == 0) { //На форме нет бизнес объектов if (DateRangeMode == enumDateRangeMode.WithoutDateMode && TreeMode == enumTreeMode.None) { RenderReport(null); } else { var isShowChannelSelector = CheckBoxChannels.IsChecked.GetValueOrDefault(); StiHelper.ShowMultiPSSelector(LayoutGrid, DateRangeMode, TreeMode, isShowChannelSelector); } return; } _businessObjectName = string.Empty; foreach (var key in businessObjects.Keys) { var businessObject = businessObjects[key]; //Тип бизнес объекта в отчете _businessObjectName = businessObject.ToString(); break; //Имеет смысл использовать только один бизнес объект в отчете } //Запрашиваем параметры StiHelper.ShowMultiPSSelector(LayoutGrid, _businessObjectName); }