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

[SOLVED] Динамическое объединение ячеек.

Добавлено: 15 окт 2013, 17:51
Dmitry Utkin
Здравствуйте,

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

Нужно сформировать таблицу (Table или DataBand - не принципиально), в которой ячейки в строках объединяются в зависимости от параметра isMerge исходных данных.
Данные имеют следующий вид:

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

<root>
	<data>
		<text>Text1</text>
		<isMerge>1</isMerge>
	</data>
	<data>
		<text>Text2</text>
		<isMerge>0</isMerge>
	</data>
	<data>
		<text>Text3</text>
		<isMerge>1</isMerge>
	</data>
</root>
Подскажите как на основе них получить таблицу вида:
Изображение

Использую версию StimulsoftReports.Ultimate_2012.2

Заранее спасибо.

Re: Динамическое объединение ячеек.

Добавлено: 16 окт 2013, 10:50
HighAley
Здравствуйте.

К сожалению, во время рендеринга отчёта объединить ячейки не представляется возможным. Таблица это достаточно сложный компонент, который преобразуется в более простые.
Можем посоветовать использовать простой бэнд с текстовыми компонентами.

Спасибо.

Re: [SOLVED] Динамическое объединение ячеек.

Добавлено: 18 окт 2013, 11:02
Dmitry Utkin
Aleksey Andreyanov, спасибо за ответ.

Как писал ранее, в решении Table или DataBand - не принципиально.
Решить проблему получилось при помощи DataBand.

Может кто-то столкнулся с подобной проблемой и мое решение поможет. Aleksey Andreyanov, поправьте меня пожалуйста если где-то ошибся или можно сделать проще.

На DataBand нужно положить контролы, для отображения разделенных и объединенных значений.
Изображение
Текст в ячейках будет отображаться в зависимости от признака isMegre.
Для разделенных ячеек:

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

{IIF(data.isMerge == "1", data.displayText, string.Empty)}
{IIF(data.isMerge == "1", "some_static_text", string.Empty)}
Для объединенной ячейки:

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

{IIF(data.isMerge != "1", data.displayText, string.Empty)}
Для панели на которой лежат разделенные ячейки нужно указать:
CanGrow: true
CanShrink: true

Для ячеек на панели:
CanGrow: true
CanShrink: true
GrowToHeight: True
ShiftMode: Increasing Size, Decreasing Size

Для ячейки эммулирующей объединение:
CanGrow: true
CanShrink: true
ShiftMode: Increasing Size, Decreasing Size

Таким образом ячейки, в которых нет текста будут сжиматься и их не будет видно в результате.

Re: [SOLVED] Динамическое объединение ячеек.

Добавлено: 18 окт 2013, 11:09
Aleksey
Здравствуйте,

Спасибо за подробное описание решения данной задачи.