Событие Exporting в MVC Viewer

Обсуждение Stimulsoft Reports.WEB
Ответить
DmitryRu
Сообщения: 163
Зарегистрирован: 19 май 2014, 10:40

Событие Exporting в MVC Viewer

Сообщение DmitryRu »

Здравствуйте.
Хочу спрятать часть компонентов в отчете при экспорте отчета в Excel из MVC Viewer.
Т.е., когда пользователь из просмотра в MVC Viewer жмет на "Save - Microsoft Excel File", далее выбирает настройки экспорта.
Мне надо перехватить событие, что пользователь экспортирует отчет в XLS.
Для этого я в демо-примере "Using Viewer, Razor", в файле HomeController.cs добавил в конец метода GetReportSnapshot такие строки:

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

            report.Exporting += ReportOnExporting;
            return StiMvcViewer.GetReportSnapshotResult(report);
        }

        private void ReportOnExporting(object sender, StiExportEventArgs stiExportEventArgs)
        {
            //Тут я прячу что мне надо
        }
Однако, данное событие не вызывается, если пользователь сохраняет отчет в формате XLS прямо из окна MVC Viewer.
Это баг или я что-то не понимаю?

Я знаю о наличии события Actions.ExportReport у MVC Viewer, однако, оно не имеет параметров, а сравнивать не документированые строки где-то в глубинах HTTP запроса, не хотелось бы.

Используемая версия - 2015.2.0
Проект "Using Viewer, Razor" из каталога Samples.

Спасибо.
Аватара пользователя
Vladimir
Сообщения: 415
Зарегистрирован: 06 авг 2008, 09:48
Откуда: Earth

Re: Событие Exporting в MVC Viewer

Сообщение Vladimir »

Здравствуйте Дмитрий,

При использовании действия Actions.ExportReport вам нет необходимости перебирать все параметры HTTP запроса, вы можете использовать следующий код:

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

        public ActionResult ExportReport()
        {
            var report = StiMvcViewer.GetReportObject();
            var vars = StiMvcViewer.GetViewerParameters();
            if (vars.Options.ExportFormat == StiExportFormat.Excel)
            {
                //report.что-то-спрятать;
            }

            return StiMvcViewer.ExportReportResult(report);
        }
Спасибо.
Ответить