Получить значение их Текст2.Text

Обсуждение Stimulsoft Reports.NET
Ответить
tat-besidovska
Сообщения: 14
Зарегистрирован: 14 мар 2011, 03:30

Получить значение их Текст2.Text

Сообщение tat-besidovska »

Добрый день. Вопрос такой. Не могу достучаться до свойства Text контрола Текст. После того как отчет сформирован, надо получить значение из Текст2.Text, но ничего не получается, возвращается null. Подскажите, как быть?
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Получить значение их Текст2.Text

Сообщение Jan »

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

В каком месте Вы пытаетесь достучаться до этого свойства?

Спасибо.
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Получить значение их Текст2.Text

Сообщение Ivan »

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

Во время построения отчета существует два экземпляра компонента (минимум два). Первый экземпляр - компонент в шаблоне. Второй экземпляр - компонент, созданный в построенном отчете. Во время создания второго экземпляра объекта движок генератора отчетов вычисляет выражение и записывает его значение во второй экземпляр.

Команда report.GetComponentByName() возвращает компонент из шаблона (первый экземпляр). Чтобы получить второй экземпляр, надо использовать команду:

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

     yourReport.RenderedPages.GetComponentByName("nameOfYourComponent");
Еще один нюанс: если компонент лежит на бэнде, то в построенном отчете будет столько экземпляров этого компонента, сколько раз выводился бэнд. И все эти компоненты будут иметь одно и то же имя. Поэтому команда вернет только первый из этих компонентов. Чтобы получить значения всех компонентов, можно использовать следующий код:

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

            foreach (StiPage page in yourReport.RenderedPages)
            {
                foreach (StiComponent comp in page.Components)
                {
                    if (comp.Name == "nameOfYourComponent")
                    {
                        string text = (comp as StiText).Text;
                        //теперь делать что-нибудь с этим значением
                    }
                }
            }
Спасибо.
Ответить