Растяжение ячейки CrossTab по горизонтали - PullRequest
3 голосов
/ 05 апреля 2011

Как заставить ячейку значения [в виджете CrossTab] растягивать горизонтально, а не вертикально? Растяжение при переполнении растягивает ячейку вертикально, а не горизонтально.

1 Ответ

3 голосов
/ 06 апреля 2011

Фон

Если я правильно помню, ячейки в JasperReports не были ни разработаны, ни реализованы для растяжения по горизонтали. Это было сознательное решение, принятое ведущими разработчиками.

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

Представьте, что у вас есть 100 000 строк данных и вы хотите, чтобы ячейка автоматически соответствовала самой длинной строке. JasperReports должен будет сделать одну из двух вещей:

  1. В общем случае измените оператор SQL разработчика, чтобы запросить самую длинную строку в каждом из соответствующих столбцов перед запуском окончательного оператора SQL. Это эффективно выполняет запрос дважды. Если в запросе используется непостоянный вызов функции, могут возникнуть всевозможные проблемы.
  2. Запросить все строки, а затем определить самую длинную строку. Для запросов до 10000 записей это не проблема. Масштабирование до 100 000 строк приводит к значительному снижению производительности и потребляет значительную часть оперативной памяти.

Тогда вы должны ответить на вопросы о пустом пространстве: обрезать или не обрезать? Если программное обеспечение для отчетов обрезает его, возвращаемые данные не являются точным представлением информации в базе данных. Если данные не обрезаны, то это приводит к большему количеству проблем (таких как неожиданно сверхдлинные столбцы, которые выглядят «пустыми»). Или вы можете сделать еще одну вещь, которую должен сделать разработчик.

Это не тривиальная проблема.

Альтернативы

Попробуйте DynamicJasper .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...