Iterate Tabelle mit verschiedenen Hintergründen (Stylesheet)

Status
Nicht offen für weitere Antworten.

TorstenW

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


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

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

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

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

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

Mitglied
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 :)

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

Mitglied
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
Code:
<%@ 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

Top Contributor
Hast du mal folgendes ausprobiert (ungetestet)?
Code:
<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>
...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben