Seite 1 von 1

[Bottle] Tabellenspalten unterschiedlich färben (odd-even)

Verfasst: Donnerstag 4. Oktober 2012, 09:41
von lackschuh
Hallo

Ich zieh mir Daten aus einer Datenbank. Zur besseren Übersicht will ich nun abwechslungsweise die Spalten färben. Die beiden Klassen habe ich bereits in der CSS erstellt:

Code: Alles auswählen

.td_element_odd {
    font-weight: normal;
    font-size : 11px;
    background-color : #DDDDDD;
    margin-left : 0px;
    padding-left :4px;
    color : Black;
}
.td_element_even {
    font-weight: normal;
    font-size : 11px;
    background-color : #CCCCCC;
    margin-left : 0px;
    padding-left : 4px;
    color : Black;
}
Im Template sieht es so aus:

Code: Alles auswählen

<table width="100%" border="0" cellspacing="1" cellpadding="0">
    
	  <tr>
		<td width="30" class="td_head1">ID</td>
		<td align="left" class="td_head1">Titel</td>
		<td width="100" align="left" class="td_head1">Vorname</td>
		<td align="left" class="td_head1">Nachname</td>
		<td align="left" class="td_head1">Autortyp</td>
        <td align="left" class="td_head1">Verlag</td>
        <td align="left" class="td_head1">Jahr</td>
        <td align="left" class="td_head1">Standort</td>
        <td align="left" class="td_head1">Kategorie</td>
	  </tr>
%for row in rows:
   %for col in row:
    <td>{{col}}</td>
  %end
  </tr>
%end
</table>
Nun müsste ich für die erste Spalte <tr class="td_element_odd" align="left">, für die zwite <tr class="td_element_even" align="left">, für die dritte wieder odd usw. Also irgendwie

Code: Alles auswählen

%for row in rows:
 <tr class="td_element_odd" align="left">
   %for col in row:
Für Django hätte ich nach längerer Suche wohl eine Lösung gefunden. Wenn jemand einen Tipp hätte, wäre ich sehr froh.

lg

Re: [Bottle] Tabellenspalten unterschiedlich färben (odd-eve

Verfasst: Donnerstag 4. Oktober 2012, 11:29
von Sr4l
Ich kenne mich mit der Bottle Template Engine nicht aus aber die zweite Variante sollte funktionieren, vielleicht auch die erste.
Vielleicht macht der modulo Operator aber auch ärger.

Variante 1:

Code: Alles auswählen

%for i, row in enumerate(rows):
%classname = "td_element_even" if i % 2 == 0 else "td_element_odd"
<tr class="{{classname}}" align="left">
   %for col in row:
Variante 2:

Code: Alles auswählen

%for i, row in enumerate(rows):
%if i % 2 == 0:
<tr class="td_element_even" align="left">
%else:
<tr class="td_element_even" align="left">
%end
   %for col in row:
*edit*
Sofunktioniert auch Variante 1

Variante 1:

Code: Alles auswählen

%for i, row in enumerate(rows):
%setdefault("classname", "td_element_even" if i % 2 == 0 else "td_element_odd")
<tr class="{{classname}}" align="left">
   %for col in row:

Re: [Bottle] Tabellenspalten unterschiedlich färben (odd-eve

Verfasst: Donnerstag 4. Oktober 2012, 12:22
von lackschuh
Hallo

Vielen lieben Dank. Beide Varianten funktionierten.

lg

PS: ich war auch schon am überlegen, wie ich gerade und ungerade Spaltennummern herausfinden kann. Aber auf die einfache aber geniale Idee, den Rest einer ganzzahligen Division wäre ich wahrscheinlich nie im Leben gekommen :lol:

Re: [Bottle] Tabellenspalten unterschiedlich färben (odd-eve

Verfasst: Donnerstag 4. Oktober 2012, 17:18
von Hyperion
Ich mag ja `itertools.cycle` für solche Sachen.

Re: [Bottle] Tabellenspalten unterschiedlich färben (odd-eve

Verfasst: Freitag 5. Oktober 2012, 08:39
von apollo13
Ich würde ja einfach CSS dafür verwenden: http://www.w3.org/Style/Examples/007/evenodd.en.html

Re: [Bottle] Tabellenspalten unterschiedlich färben (odd-eve

Verfasst: Freitag 5. Oktober 2012, 12:30
von lackschuh
apollo13 hat geschrieben:Ich würde ja einfach CSS dafür verwenden: http://www.w3.org/Style/Examples/007/evenodd.en.html
Vielen Dank für die Info. Dies ist wohl die einfachste Lösung. :wink: