Баг репорт №3!
Проблема:
не обрабатываются события в дочерних отчётах
Моделирование:
1. создаем детальный отчет, размещаем в отчете 2 объекта, не важно где (например в заголовке отчёта), я в виде примера использовал textbox и checkbox
2. заходим в его события (там же где параметры), выбираем событие Click жмем по нему 2 раза, открывается код и создается процедура привязанное к этому событию
private void CheckBox1_Click(object sender, EventArgs e)
внутри процедуры пишет MessageBox.Show("test");
проделываем тоже самое с checkbox'ом
(надо не забыть еще создать параметр в детальном отчёте, иначе нельзя будет его зацепить за главный отчет)
жмем Ctrl-P, нажимаем на checkbox, textbox, всё замечательно, выскакивает сообщение "test"
сохраняемся выходим
2.создаем отчёт (master) и создаем в нём textbox, к этому полю прикручиваем hyperlink на "Детальный отчёт", в параметрах указываем отчет и всё прочее (не проблему не влияет)
запускает отчет, кликаем по нашей ссылке, открывается в TAB'е детальный отчет, в котором мы ранее создали 2 объекта и привязали к ним события. жмем на объекты... событие Click не обрабатывается
пока всё
не обрабатываются события в дочерних отчётах
Моделирование:
1. создаем детальный отчет, размещаем в отчете 2 объекта, не важно где (например в заголовке отчёта), я в виде примера использовал textbox и checkbox
2. заходим в его события (там же где параметры), выбираем событие Click жмем по нему 2 раза, открывается код и создается процедура привязанное к этому событию
private void CheckBox1_Click(object sender, EventArgs e)
внутри процедуры пишет MessageBox.Show("test");
проделываем тоже самое с checkbox'ом
(надо не забыть еще создать параметр в детальном отчёте, иначе нельзя будет его зацепить за главный отчет)
жмем Ctrl-P, нажимаем на checkbox, textbox, всё замечательно, выскакивает сообщение "test"
сохраняемся выходим
2.создаем отчёт (master) и создаем в нём textbox, к этому полю прикручиваем hyperlink на "Детальный отчёт", в параметрах указываем отчет и всё прочее (не проблему не влияет)
запускает отчет, кликаем по нашей ссылке, открывается в TAB'е детальный отчет, в котором мы ранее создали 2 объекта и привязали к ним события. жмем на объекты... событие Click не обрабатывается
пока всё
Комментарии
но событие у них у всех общее и параметры общие, тут подкрадывается косяк
то есть события из 1 копии страницы номер 2, влияют на 2 копию страницы номер 2... так что такой вариант еще хуже
что то можете еще посоветовать?
может быть как то можно вызывать событие непосредственно в frPreview классе, тогда это можно будет реализовать программным путём уровнем выше.
в чём вообще трабл?
но тут особо и смотреть не на что, все старницы работают в одном адресном пространстве и имеют общие параметры, переменные и так далее.
то есть, если я вызываю страницу №2 (по гиперссылке) и передаю в неё параметр 1, параметр измениться и страница будет сформирована
далее, если я открою 2 гиперссылку с этой странице и передам туда параметр 2, в предыдущей вкладке (которую я открыл по пред. гиперссылке) этот параметр тоже станет 2.
то есть я не могу в случаи необходимости переформировать эту страницу правильно. её обновление приведет к тому, что я получу страницу с параметром 2, а не параметром 1 (который я ей передавал)
то есть в результате имеет 3 вкладки, мастер отчёт и 2 страницу в 2 видах, если я вызову событие во 2 табе и изменю какие то параметры, потом его перерисую то сформируется то он с теми параметрами которые я передал в 3.
в 1 же варианте, всё передается правильно, то есть каждая таб это отдельный отчет, у него свои параметры и переменные и я могу управлять им независимо. но события не обрабатываться... почему то. ...
2 файлом привожу пример 1 поста.
в 1 примере кликаем на ссылку 1 и ссылку 2, затем переключаемся во вкладку №2 и видим, что там параметр будет 2..
Что касается примеров в аттаче - это я уже говорил, с типом ссылки "Детальный отчет" события превью не работают. Здесь есть ограничение: один Preview = один Report + один или несколько готовых отчетов (PreparedPages). Т.к. Report один, то и скрипт тоже один.
при вызове Refresh у меня выполняется событие ReportStart (в моём отчёте), в отчете данные берутся из sql базы и оснавная часть полей обрабатывается в процедурах.
после чего все данные выводят в бенд из коллекций и массивов. довольно замароченная фигня, передать её вам не получится, так как она тесна связана с моей AD и базой данных.
когда происходит событие на checkbox'е в фильтр бенда данные добавляются новое условие (или удаляется) и я делаю Refresh, отчёт обновляется.
у меня такой вопрос, можно ли как то событие объекта checkbox или к примеру textbox, передать в код уровнем выше, то есть в программу в которой находиться объект Preview?
это решило бы все проблемы. так как я пока не понял, как организоваться обратную связь.
проше говоря при клике на Textbox выполняется событие textbox1_click в коде самого фастрепорта, внутри этого события я бы вызывал событие Preview контрола, которое перехватывалось бы в VS?
было бы супер круто и мне кажется, это не так сложно реализовать.
хотя бы функцией (главное, чтобы можно было передать аргументы в событие)
вариант со страницами вообще не подходит для реализации таких задач.
я понимаю, что много хочу.. но возможно ли такое?
P.S. завтра с работы попробую закинуть то, что не получилось вечером сегодня
Теоретически можно, вызвав нужную ф-ю из скрипта Click. Только в вашем случае это не сработает. Причину я объяснял выше - события preview не работают в детальных отчетах.
Боюсь, что других вариантов просто нет.
но что происходит с объектами внутри отчета из своей программы я узнать не могу
про события только вы ни чего не сказали...