Подписание на событие StiOptions.WCFService.WCFOpeningReport
Подписание на событие StiOptions.WCFService.WCFOpeningReport
Здравствуйте.
У нас в приложении можно открывать несколько форм с построителем отчета. Это контрол 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.
У нас в приложении можно открывать несколько форм с построителем отчета. Это контрол 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
Здравствуйте.
Уточните, пожалуйста, какой наш продукт вы используете и его версию.
Вы написали в вeтке продукта Reports.Net, но так нету ничего подобного.
Спасибо.
Уточните, пожалуйста, какой наш продукт вы используете и его версию.
Вы написали в вeтке продукта Reports.Net, но так нету ничего подобного.
Спасибо.
Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe
Видимо да, не в ту ветку написал. Используем Stimulsoft.WFP, версия 2014.3
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe
Здравствуйте,
Мы доработали этот недочет. Теперь в sender будет передаваться StiWpfDesignerControl.
Патч будет доступен в пятницу в пререлиз билде.
Спасибо.
Мы доработали этот недочет. Теперь в sender будет передаваться StiWpfDesignerControl.
Патч будет доступен в пятницу в пререлиз билде.
Спасибо.
Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe
Большое спасибо.
Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe
Пожалуйста проверте еще событие WCFExportDocument. Там тоже sender возвращает null
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Re: Подписание на событие StiOptions.WCFService.WCFOpeningRe
Здравствуйте,
Это проблема тоже была исправлена.
В этом событии в sender будет возвращаться StiReport(текущий отчет).
Спасибо.
Это проблема тоже была исправлена.
В этом событии в sender будет возвращаться StiReport(текущий отчет).
Спасибо.