[JSF] Gekleurde rijen in dataTable

Pagina: 1
Acties:

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Topicstarter
Ik vraag het hier maar, want ik kan geen goede oplossing vinden binnen JSF. Het probleem:

Op mijn huidige project willen we, afhankelijk van een aantal checks, rijen in overzichten een kleurtje geven. Dus afhankelijk van de status van die rij de kleur bepalen. Op zich klinkt het niet moeilijk, maar ik kan geen JSF oplossing vinden die me echt aanstaat.

Ik heb nu twee werkende oplossingen, namelijk:
  1. Facelets <ui:repeat />. Dit is niks meer dan een veredelde for loop waarmee ik zelf mijn tabel teken. Werkt op zich wel, maar ik heb nu eenmaal een complete applicatie op basis van datatables en wil het liever niet omzetten.
  2. JavaScript. Per rij geef ik momenteel in een specifiek overzicht hidden velden terug met de status van die rij en op de client wordt nog eens over alle rijen heen geïtereerd. Dit JavaScript stuk is nodig voor een iets beter reagerende GUI, maar die hidden velden zijn vies, vind ik. Bovendien kost de eerste iteratieslag bij grote overzichten veel tijd op de client. In IE kan het oplopen tot 20 sec.
  3. Met fancy CSS kun je volgens mij ook iets doen zoals selectors die op basis van children opereren, maar dat oogt nog niet cross browser.
Weten jullie een manier hoe je in een datatable toch je rijen van een kleurtje kunt voorzien? En dan doel ik niet op een oplossing zoals de tekst vet maken, dat is makkelijk, maar daadwerkelijk invloed uitoefenen op de manier hoe JSF TR's en TD's tekent.

Dit is een vorm van resultaat dat ik voor ogen heb:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<table>
  <tr class="even">
    <td>1</td><td>2</td><td>3</td>
  </tr>
  <tr class="oneven">
    <td>1</td><td>2</td><td>3</td>
  </tr>
  <tr class="even">
    <td>1</td><td>2</td><td>3</td>
  </tr>
  <tr class="BLAUW">
    <td>1</td><td>2</td><td>3</td>
  </tr>
  <tr class="even">
    <td>1</td><td>2</td><td>3</td>
  </tr>
</table>

Fat Pizza's pizza, they are big and they are cheezy