# Iterate Tabelle mit verschiedenen Hintergründen (Stylesheet)



## TorstenW (31. Jul 2008)

Ich möchte beim Anzeigen der Tabbelle einmal Grauen Hintergrund einmal Weissen Hintergrund die Stylesheets dafür habe ich alle. 
Problem ist jetzt nur in dem Ierate einmal <tr class="style1"> und beim nächsten Durchgang <tr class="style2"> zu schreiben.



```
<table>
<logic:iterate id="id" name="tree">
<tr class="style1" und class="style2" abwechselnd >               
<td><bean:write name="id" property="value.name"/></td>
<td><bean:write name="id" property="value.id"/></td>
</tr>
</logic:iterate>
</table>
```
Ich sag schonmla Danke weil das wird bestimmt einer wissen


----------



## HLX (31. Jul 2008)

Soweit mir bekannt ist, gibt es ab CSS3 Style-Attribute, mit denen man das abhandeln kann. Bei älteren CSS-Versionen hilft wohl nur eine Iteration oder ein Tag zu schreiben, dass diese Iteration beinhaltet.

Ansonsten kann ich dir auch die "display tag library" empfehlen, eine leistungsfähige Bibliothek zur Darstellung von Tabellen. Die beinhaltet u.a. auch die von dir gewünschte Funktion 
displaytag.sourceforge.net/11/


----------



## TorstenW (1. Aug 2008)

Danke für die Antwort HLX aber eine andere Taglib kann ich nicht verwenden habe da meine Vorgaben 
was ich halt eigentlich genau suche fals das nicht ganz rausgekommen ist. Eine möglichkeit mit Struts die Sache zu realisieren 
wie zb mit einem boolean der im iterate seinen Wert wechselt und dadurch einmal style 1 einmla style 2 anzeigt 
das alles aber ohne Javacode sondern nur mit Struts gibt es da was ?


```
<table>
<logic:iterate id="id" name="tree">
boolean der bei jedem durchgang den wert ändert 
<tr if bo=true class="style1" und if bo = false class="style2" abwechselnd >              
<td><bean:write name="id" property="value.name"/></td>
<td><bean:write name="id" property="value.id"/></td>
</tr>
</logic:iterate>
</table>
```

Habe das mal nur zur Erklärung reingehauen um es verständlich zu machen was ich möchte !


----------



## HLX (1. Aug 2008)

Ist mir nicht bekannt. Ganz ohne JSP kommst du definitiv nicht aus, da du den Style dynamisch zuweisen musst...außer, wie gesagt, du schreibst ein eigenes Tag. Aber da wäre die Verwendung einer bereits bestehenden Bibliothek schon wesentlich einfacher.

Das einfachste allerdings wäre ein kleines JSP-Fragment. Bei der Verwendung von <logic:iterate> kannst du über das Attribut "indexId" eine Variable definieren, die den index deiner Iteration enthält. Diesen kannst du für deine Stylezuweisung nutzen: index%2 = 0 oder 1. Je nach Wert weist du einen Style für eine gerade oder ungerade Zeile zu.


----------



## TorstenW (1. Aug 2008)

Ich habe einen Ansatz gefunden der mich der Lösung ganz nah bringt hier wird die IndexId abgefragt aber das mit dem 
index%2 = 0 oder 1 bekomme ich noch nicht gebastelt aber ich bin kurz vorm Durchbruch 


```
<logic:iterate id="element" name="tree" indexId="itemidx">
<logic:equal name="itemidx" value="1">
<tr class="Style1">
</logic:equal>
<logic:equal name="itemidx" value="2">
<tr class="Syle2">
</logic:equal>
	<td>
```


----------



## TorstenW (4. Aug 2008)

So nah und doch so fern  hat noch einer einen Tip ? es will noch nicht so wie ich es will !


----------



## TorstenW (11. Aug 2008)

Meine derzeitige Lösung sieht so aus und ist eigentlich nicht das was ich wollte aber es geht derzeit nicht anders
fals mir das einer in komplett STRUTS umbauen kann wäre ich ein Glücklicher Mann!

Meine JSP

```
<%@ page language="java" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>


<%int i=0; %>



<html:form action="/form.do">
	<bean:define id="tree" name="form" property="tree"/>
	<head>
		<link rel="STYLESHEET" type="text/css" href="admin/common/conf.css">
	</head>
		<body>
			

			<table>
			<TR>
     			<TH>Name</TH>
     			<TH>ID</TH>
	 			<TH>Type</TH>
				<TH>Type Change</th>	
			</TR>
				<logic:iterate id="element" name="tree">
			<% 
			if (i%2==0){%><tr class="style1"><%}
			if (i%2==1){%><tr class="style2"><%}
			i++;
			%>
						<td>
							<bean:write name="element" property="value.name"/>
						</td>
						<td>
							<bean:write name="element" property="value.type"/>
						</td>
						<td>
							<html:select name="form"  property="liste" >
							<html:option value=""/>
							<html:option value="A"/>
							<html:option value="B"/>
							<html:option value="/"/>
							</html:select>
						</td>	
					</tr>
				</logic:iterate>
			</table>
				

	<html:submit styleClass="button" property="button" style="width:100;" value="Discard"/>

	<html:submit styleClass="button" property="button" style="width:100;" value="Accept"/>

 
</body>
</html:form>
```


----------



## HLX (11. Aug 2008)

Hast du mal folgendes ausprobiert (ungetestet)?

```
<logic:iterate id="element" name="tree" indexId="itemidx">
    <bean:define id="myId" value="<%= itemidx % 2 %>"/>
    <logic:equal name="myId" value="0"> 
        <tr class="Style1"> 
    </logic:equal> 
    <logic:equal name="itemidx" value="1"> 
        <tr class="Style2"> 
    </logic:equal> 
           <td>
...
```


----------

