Подписание на событие StiOptions.WCFService.WCFOpeningReport

Обсуждение Stimulsoft Reports.Wpf
Ответить
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 07:15

Подписание на событие StiOptions.WCFService.WCFOpeningReport

Сообщение Odon01 » 23 янв 2015, 13:29

Здравствуйте.
У нас в приложении можно открывать несколько форм с построителем отчета. Это контрол StiWpfDesignerControl. Т.е. может быть открыто несколько форм с данным контролом.

Рендеринг отчета делается на WCF сервисе. Поэтому подписываемся на события WCF
вот так: StiOptions.WCFService.WCFOpeningReportInDesigner += WCFOpeningReportInDesigner;
на каждой форме. Сколько открытых форм, столько и подписей на события.

При закрытии формы, от события отписываемся:
StiOptions.WCFService.WCFOpeningReportInDesigner -= WCFOpeningReportInDesigner;

При нажатии кнопки "Открыть отчет" вызывается
WCFOpeningReportInDesigner(object sender, Stimulsoft.Report.Events.StiWCFOpeningReportEventArgs e)
Cобытие вызывается для каждой открытой формы c StiWpfDesignerControl, несмотря на то, что кнопка нажата один раз. Но тут все понятно - сколько подписываний, столько и вызовов процедур.

Я свою форму пытаюсь отследить в процедуре WCFOpeningReportInDesigner по переменной sender.
Примерно так: if (!Equals(sender, Designer)) return;
Где Designer это построитель отчета на текущей, конкретной форме. Наверное такая логика правильная, но тут возникают проблемы - переменная sender для события WCFOpeningReportInDesigner всегда null.
Для остальных событий sender всегда возвращает контрол сгенерировавший данное событие (StiWpfDesignerControl). Как например для события WCFRenderReport.
А вот для события WCFOpeningReportInDesigner всегда sender == null.
Что я делаю не так? Мне необходимо отследить на какой форме нажата кнопка "Открыть отчет". Или может быть есть возможно подписать на данное событие конкретный экземпляр StiWpfDesignerControl, а не глобальный объект StiOptions.WCFService?

p.s.
Быстренько пробежался по вашим исходникам. В файле StiActions.cs есть такая строка:
reportOpenResult = StiOptions.WCFService.InvokeWCFOpeningReportInDesigner();

Может быть в процедуру InvokeWCFOpeningReportInDesigner имело бы смысл передавать переменную designer?
Ну и там дальше по цепочке передавать в событие переменную designer.
HighAley
Сообщения: 1975
Зарегистрирован: 08 июн 2011, 07:36

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение HighAley » 23 янв 2015, 13:52

Здравствуйте.

Уточните, пожалуйста, какой наш продукт вы используете и его версию.
Вы написали в вeтке продукта Reports.Net, но так нету ничего подобного.

Спасибо.
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 07:15

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение Odon01 » 23 янв 2015, 14:03

Видимо да, не в ту ветку написал. Используем Stimulsoft.WFP, версия 2014.3
Anton Lozovskiy
Сообщения: 264
Зарегистрирован: 12 ноя 2007, 05:16

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение Anton Lozovskiy » 26 янв 2015, 07:32

Здравствуйте,

Мы доработали этот недочет. Теперь в sender будет передаваться StiWpfDesignerControl.
Патч будет доступен в пятницу в пререлиз билде.

Спасибо.
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 07:15

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение Odon01 » 26 янв 2015, 08:26

Большое спасибо.
Аватара пользователя
Odon01
Сообщения: 28
Зарегистрирован: 19 янв 2015, 07:15

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение Odon01 » 26 янв 2015, 12:47

Пожалуйста проверте еще событие WCFExportDocument. Там тоже sender возвращает null
Anton Lozovskiy
Сообщения: 264
Зарегистрирован: 12 ноя 2007, 05:16

Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe

Сообщение Anton Lozovskiy » 27 янв 2015, 10:24

Здравствуйте,

Это проблема тоже была исправлена.
В этом событии в sender будет возвращаться StiReport(текущий отчет).

Спасибо.
Ответить