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

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

Добавлено: 23 янв 2015, 16:29
Odon01
Здравствуйте.
У нас в приложении можно открывать несколько форм с построителем отчета. Это контрол 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.

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

Добавлено: 23 янв 2015, 16:52
HighAley
Здравствуйте.

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

Спасибо.

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

Добавлено: 23 янв 2015, 17:03
Odon01
Видимо да, не в ту ветку написал. Используем Stimulsoft.WFP, версия 2014.3

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

Добавлено: 26 янв 2015, 10:32
Anton Lozovskiy
Здравствуйте,

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

Спасибо.

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

Добавлено: 26 янв 2015, 11:26
Odon01
Большое спасибо.

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

Добавлено: 26 янв 2015, 15:47
Odon01
Пожалуйста проверте еще событие WCFExportDocument. Там тоже sender возвращает null

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

Добавлено: 27 янв 2015, 13:24
Anton Lozovskiy
Здравствуйте,

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

Спасибо.