2008-11-18 21 views
5

Mam kilka raportów Jaspera, które są wyświetlane w formacie HTML. Chciałbym, aby szerokość kolumn w tabelach HTML była automatycznie zmieniana, aby pasowała do zawartości najszerszej komórki (w tej kolumnie), tak aby wszystkie dane były wyświetlane.Dynamiczna szerokość komórki kolumny

Obecnie nie dzieje się tak dlatego, że HTML wygenerowany przez Jasper określa stałych szerokościach na stole < > i niektórych <td> elementów, na przykład

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

I nie można po prostu usunąć wszystkie te właściwości Szerokość (przy użyciu JavaScript), ponieważ (jak pokazano w HTML powyżej) wszelkie dane, które będą ukryte podczas korzystania z tych szerokościach nawet nie jest zwracana stronie klienta

Cheers, Don

+0

Czy próbowali za pomocą [iReport] (http://jasperforge.org/plugins/project/project_home.php?group_id=83). Jest to IDE do pisania JasperReports. To może uprościć twoje życie. – Tom

+0

Mam ten sam problem. Jeśli chcesz, aby kolumny były rozmieszczone równomiernie na dostępnej szerokości, nie jest to możliwe. W Jasper Stuido, gdy tworzysz tabelę z 10 kolumnami, zamienia ona kolumny w maleńki obszar o szerokości zaledwie 22 pikseli. Musisz następnie edytować każdą komórkę i ręcznie zmienić szerokość na jakąś wartość, którą obliczysz - zajmie to wiele godzin. Potem, kiedy chcesz to zmienić ... z tego powodu NIGDY nie używam tabel. Używam podraportów na prawie wszystko, ponieważ możesz zmienić ich szerokość, przeciągając. –

Odpowiedz

4

Chociaż nie jest idealny, można flag pole rozciągnąć z przelewem. To da ci przynajmniej wszystkie dane. W pliku jrxml byłoby podobne do:

<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> 

Obawiam się, że nie znam żadnego cechą Jasper informuje, że pozwoli dynamiczną zmianę rozmiaru szerokości kolumn - Jest to prawdopodobnie jedna z tych rzeczy, które ma sens dla HTML, ale ma niewielkie znaczenie dla innych formatów wyjściowych, takich jak PDF.

+0

Zgadzam się z Jamie Love. Ale zastosowałbym jego sugestię do znacznika columnHeader, aby właściwość mogła zostać zastosowana dla całej kolumny. –

+0

Awesome, thanks !! Zauważyłem, że gdy kolumna rozciąga się, aby dopasować się do zawartości, nie ma wypełnienia obok sąsiedniej kolumny. Dodanie '' w elemencie 'textField' naprawiło ten problem zgodnie z sugestią [to odpowiedź SO] (http://stackoverflow.com/a/14284593/848668) – br3nt

-2

W iReport dostępna jest opcja o nazwie "Typ rozciągnięcia". Wybierz "Względna wysokość pasma"

+3

@Carlos: To będzie powoduje, że komórka rozciąga się na wysokość, a nie na szerokość. –

3

Twórcy podjęli świadomą decyzję, aby nie dopuścić do rozciągnięcia się szerokości komórki. Aby kolumny zmieniały swoją szerokość na podstawie treści, należy to zrobić za pomocą programowania. Pomocne narzędzie: DynamicJasper.

DynamicJasper tworzy raporty dynamicznie, definiując przy starcie z kolumn, szerokość kolumny (szerokość auto), grupy, zmienne, czcionki, Wykresy, crosstabs raporty cząstkowe (które mogą także być dynamiczny), strona rozmiar i wszystko inne, które można zdefiniować na podstawie czasu projektowania .

+0

Przepraszam, ale jak to zrobić w DynamicJasper? Siewam, że 'addColumn' w 'FastReportBuilder' pyta o _int_ wartość dla szerokości –

Powiązane problemy