Страница 1 из 1

Экспорт отчета из StiSLViewerControl

Добавлено: 13 июл 2016, 16:34
vecs
Пользуемся лицензионной 2015.1.20.0

Используем StiSLViewerControl. При экспорте оттуда готового отчета в PDF приходится нажимать много кнопок
(Export - Export Settings - костыльное Save Window с одной кнопкой - SaveFileDialog)

Не нашел способа, как вызвать SaveFileDialog сразу при клике на меню Export без настроек экспорта и лишних кликов.
Не подскажете, как это можно сделать или хотя бы как отключить диалог с параметрами экспорта?


Код: Выделить всё

...
Stimulsoft.Report.StiOptions.Silverlight.WCFService.UseWCFService = true;
...
        private void WCFService_WCFExportDocument(object sender, Stimulsoft.Report.Events.StiWCFExportEventArgs e)
        {
            if (sender != this.viewer)
                return;

            string exportFilter = e.Filter;
            (sender as Stimulsoft.Report.Viewer.StiSLViewerControl).StartProgressInformation("Выполняется", "Экспорт отчета", Visibility.Visible);

            var serv = new ReportServ(); //remote WCF service wrapper

            InvokeOperation<byte[]> result = serv.ExportDocument(e.Xml); //Export (server-side)

            result.Completed += (send, args) =>
            {
                (sender as Stimulsoft.Report.Viewer.StiSLViewerControl).CloseProgressInformation();
                service_ExportDocumentCompleted(send, new ExportDocumentCompletedArgs(result.Value, result.Error), exportFilter);
            };

        }

        private void service_ExportDocumentCompleted(object sender, ExportDocumentCompletedArgs e, string exportFilter)
        {
            //viewer.CloseProgressInformation();
            if (e.Error == null && e.Result != null)
            {
                //SaveFileDialog можно вызвать только из UI-события, иницированного пользователем (клик по кнопке)
                //Поэтому приходится выводить вспомогательное окно с вопросом и кнопкой
                var window = new SaveWindow();
                window.OKButton.Click += delegate
                {
                    window.Close();

                    SaveFileDialog saveFileDialog = new SaveFileDialog
                    {
                        Filter = string.Format("Экспорт отчета (*.{0})|*.{0}", exportFilter)
                    };

                    if (VmReport != null)
                    {
                        if (VmReport.Vw_Report != null)
                            saveFileDialog.DefaultFileName = VmReport.Vw_Report.REPORT_NAME;
                        if (!string.IsNullOrWhiteSpace(VmReport.External_ObjectName))
                            saveFileDialog.DefaultFileName = saveFileDialog.DefaultFileName + "_" + VmReport.External_ObjectName;

                    }

                    if (saveFileDialog.ShowDialog() == true)
                    {
                        var stream = saveFileDialog.OpenFile() as FileStream;
                        stream.Write(e.Result, 0, e.Result.Length);

                        stream.Flush();
                        stream.Close();
                        stream.Dispose();
                    }
                };

                window.Show();
            }
        }

Re: Экспорт отчета из StiSLViewerControl

Добавлено: 14 июл 2016, 15:15
HighAley
Здравствуйте.

К сожалению, поддержка данного продукта уже закончилась и мы не делаем существенных изменений в нём.
Если вы лицензионный пользователь с активной подпиской, то вы можете написать запрос на support@stimulsoft.com. Тогда мы можем предоставить вам исходный код, где мы сможете изменить все как вам нужно.

Спасибо.