Страница 1 из 1
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 17 авг 2011, 04:38
John™
В отчете есть таблица в ячейке которой вставлен текст {Источник.Значение}
Соответственно, при отображении отчета в ячейке появляется реальное значение (допустим 50).
Как получить это значение в своей программе?
Пробовал так:
Код: Выделить всё
StiReport report = new StiReport();
report.Load("Report.mrt");
report.ShowWithWpf();
StiTableCell cell = report.GetComponentByName("Table1_Cell38") as StiTableCell;
string value = cell.Text; // возвращает {Источник.Значение}, а не "50"
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 17 авг 2011, 11:01
John™
Неужели никто не сталкивался с такой задачей?
Или может надо задать этот вопрос в ветке по .NET?
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 18 авг 2011, 06:35
Ivan
Здравствуйте.
Во время построения отчета существует два экземпляра компонента (минимум два). Первый экземпляр - компонент в шаблоне. Второй экземпляр - компонент, созданный в построенном отчете. Во время создания второго экземпляра объекта движок генератора отчетов вычисляет выражение и записывает его значение во второй экземпляр.
Команда report.GetComponentByName() возвращает компонент из шаблона (первый экземпляр). Чтобы получить второй экземпляр, надо использовать команду:
Еще один нюанс: если компонент лежит на бэнде, то в построенном отчете будет столько экземпляров этого компонента, сколько раз выводился бэнд. И все эти компоненты будут иметь одно и то же имя. Поэтому команда вернет только первый из этих компонентов. Чтобы получить значения всех компонентов, можно использовать следующий код:
Код: Выделить всё
foreach (StiPage page in rep.RenderedPages)
{
foreach (StiComponent comp in page.Components)
{
if (comp.Name == "Table1_Cell38")
{
string text = (comp as StiText).Text;
//теперь делать что-нибудь с этим значением
}
}
}
Спасибо.
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 18 авг 2011, 07:40
John™
Спасибо.
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 18 авг 2011, 09:53
HighAley
Мы всегда рады вам помочь.
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 23 авг 2011, 04:34
John™
Еще вопрос вдогонку:
В отчете есть таблица с именем SettingsTable. Когда я её пытаюсь найти в коде по имени тем способом, который приведен выше, оказывается, что имя у неё вовсе не SettingsTable, а SettingsTable_DB
Что это значит и как с этим бороться? Какие еще компоненты отчета могут произвольно менять свои имена?
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 25 авг 2011, 07:05
HighAley
Здравствуйте.
[quote="John"™]Еще вопрос вдогонку:
В отчете есть таблица с именем SettingsTable. Когда я её пытаюсь найти в коде по имени тем способом, который приведен выше, оказывается, что имя у неё вовсе не SettingsTable, а SettingsTable_DB
Что это значит и как с этим бороться? Какие еще компоненты отчета могут произвольно менять свои имена?[/quote]
Компонент "Таблица" является самостоятельным компонентом только в дизайнере.
При построении отчета таблица разбивается на отдельные бэнды - датабэнды и связанные с ним headers/footers. Имена этих бэндов состоят из исходного имени таблицы плюс тип бэнда, например для датабэнда - "_DB".
Также изменяются имена у контейнеров, которые разбиваются на нексолько страниц - "Breaked" и "Continued"
Спасибо.
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 29 авг 2011, 04:50
John™
Еще вопрос:
В отчете существует иерархия элементов. Например, ячейка является дочерним элементом таблицы, которая в свою очередь вставлена в страницу. Т.е. мы имеем:
С использованием свойств StiContainer.Components и StiComponent.Parent я могу ходить по этой иерархии.
Однако после рендеринга отчета (когда я получаю список компонентов через свойство StiReport.RenderedPages) такой иерархии уже не существует - все компоненты в качестве родителя ссылаются на Page.
Могу ли я как-то узнать какой таблице принадлежит ячейка уже в отрендереном отчете?
Как из кода получить значение подставляемое в ячейку таблицы?
Добавлено: 29 авг 2011, 18:36
Jan
Здравствуйте,
Можно использовать имя компонента построенной таблицы, оно остается таким же. Используя это имя произвести поиск по шаблону отчета.
Спасибо.