Экспорт отчета из StiSLViewerControl
Добавлено: 13 июл 2016, 16:34
Пользуемся лицензионной 2015.1.20.0
Используем StiSLViewerControl. При экспорте оттуда готового отчета в PDF приходится нажимать много кнопок
(Export - Export Settings - костыльное Save Window с одной кнопкой - SaveFileDialog)
Не нашел способа, как вызвать SaveFileDialog сразу при клике на меню Export без настроек экспорта и лишних кликов.
Не подскажете, как это можно сделать или хотя бы как отключить диалог с параметрами экспорта?
Используем 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();
}
}