2008-11-18 3 views
5

У меня есть отчеты Jasper, которые отображаются в формате HTML. Я хотел бы, чтобы ширина столбцов в таблицах HTML автоматически изменялась в соответствии с содержимым самой широкой ячейки (в этом столбце), так что отображаются все данные.Ширина динамической ячейки колонок

В настоящее время это не происходит, потому что HTML-порожденный Jasper указывает фиксированную ширину для < таблицы > и некоторые < тд > элементов, например,

<td style="width: 20px; height: 17px;"> 
    <span style="font-family: Arial; font-size: 11px;">[email protected]</span> 
</td> 

Я не могу просто удалить все эти свойства ширины (с помощью JavaScript), потому что (как показано в приведенном выше HTML) любых данных, которые будут скрыты при использовании этих ширинов даже не возвращаются к стороне клиента

Приветствия, Дон

+0

Вы пытались использовать [iReport] (http://jasperforge.org/plugins/project/project_home.php?group_id=83). Его IDE для написания JasperReports. Это может сделать вашу жизнь проще. – Tom 2009-04-23 14:48:04

+0

У меня такая же проблема. Если вы хотите равномерно распределить столбцы по доступной ширине, это невозможно. В Jasper Stuido, когда вы создаете таблицу с 10 столбцами, она разбивает столбцы на крошечную область шириной всего 22 пикселя. Затем вы должны разобрать каждую ячейку и вручную изменить ширину на некоторое значение, которое вы вычисляете, - требуется несколько часов. Затем, когда вы хотите изменить его. По этой причине я НИКОГДА не использую таблицы. Я использую subreports для почти всего, так как вы можете изменить их ширину, перетащив. – 2014-09-08 13:33:11

ответ

4

Пока не совершенен, вы можете помечать поле растягивать с переливом. Это, по крайней мере, даст вам все данные. В файле jrxml он будет похож на:

<textField isStretchWithOverflow="true" hyperlinkType="None"> 
<reportElement style="Report Sub-Title" x="0" y="84" width="802" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA["For the period ...]]></textFieldExpression> 
</textField> 

Я боюсь, что я не знаю ни одного признака Jasper сообщает, что позволило бы динамическое изменение размеров ширины столбцов - Это, вероятно, одна из тех вещей, имеет смысл для HTML, но мало смысла для других форматов вывода, таких как PDF.

+0

Согласитесь с Джейми Лав. Но я бы применил его предложение к тегу columnHeader, чтобы свойство применимо ко всему столбцу. – 2009-04-23 14:38:30

+0

Удивительный, спасибо! Я обнаружил, что когда столбец растягивается, чтобы соответствовать содержимому, рядом с соседним столбцом нет прокладки. Добавление `` в элементе `textField` исправлено, что проблема, предложенная [этим ответом SO] (http://stackoverflow.com/a/14284593/848668) – br3nt 2016-06-30 01:37:40

-2

В iReport есть опция «Тип растяжения». Выберите «Относительно высоты полосы»

3

Разработчики приняли сознательное решение не разрешать ширину ячейки. Для того чтобы столбцы изменяли свою ширину на основе содержимого, это должно быть сделано с помощью программирования. Полезный инструмент: DynamicJasper.

DynamicJasper создает отчеты динамически, определяя во время выполнения в столбцов, ширина столбца (авто ширина), группы, переменные, шрифты, диаграммы, Таблицы сопряженности, отчеты суб (которые также могут быть динамическими), страница размер и все еще что вы можете определить при дизайне раз.