# Checkboxes dynamisch erstellen



## Marie Curie (31. Dez 2007)

Hallo zusammen,

hab in nem Formular dynamisch generierte RadioButtons, sowie Checkboxes. Nachdem das Formular abgeschickt wurde, soll es nochmal zur Prüfung mit allen Eingaben angezeigt werden. Die Checkboxes sollen dann so angeklickt sein, wie der User sie ihm Eingangsformular gewählt hat.

Im Code unten zu sehen sind 2 for-Schleifen, die eine Tabelle erzeugen:

die erste for-Schleife generiert den Namen und den RadioButton, die Checkbox soll in einer weiteren for-Schleife erstellt werden. Die zweite for-Schleife is dabei in die erste verschachtelt. Der erste Teil funktioniert wunderbar, die namen und radiobuttons werden alle schön platziert und je nach Wahl des RadioButtons ausgewählt.

Nur bei den Checkbox's gibt es ein Problem. Diese werden zwar erzeugt, jedoch so wie im Bild im Anhang zu sehen.

Prinzipiell stelle ich mir den Ablauf so vor:
im Eingangsformular wird geprüft, welche Box gewählt wurde. Diese bekommt eine ID und wird einer Liste hinzugefügt. Im Formular zum Prüfen wird dann jedes Element aus der Liste mit den IDs der Kunden verglichen. Stimmt die ID überein, hat der Benutzer die Box markiert und sie soll als "checked" ausgegeben werden. Stimmt die ID nicht überein, soll er eine leere Checkbox generieren.


```
<table border="1" width="65%">
		 <th>Name:</th>
		 <th>Referenz:</th>
		 <th>Beteiligt:</th>
		 <%	ArrayList buyer = einZugriff.getDatensaetzeBuyer();
		 	ArrayList parties = headerWerte.getParties();
		 	
                        // wird auf true gesetzt, wenn eine Checkbox bereits eingefügt wurde
                         boolean vorhanden = false;

                        // headerWerte is eine JavaBean
		 	String buyer_idref = headerWerte.getBuyer_idref();
		 	for(int i = 0; i <= buyer.size() - 1; i++){
		 		vorhanden = false;

				db.dbTuple einDatensatz = (db.dbTuple) buyer.get(i);
		 		db.Adress eineAdresse = einDatensatz.getAdress();
				String name = eineAdresse.getName();

		%>
		<tr>
			<td><%= name  %></td>
		 	<td>
		 	<%		int party_id = einDatensatz.getParty_id();
					String party_role = einDatensatz.getParty_role();

					if(buyer_idref.equals(String.valueOf(party_id))){
						%><center><input type="radio" value=<%=party_id%> name="kunde" checked></center><%
					}else{
						%><center><input type="radio" value=<%=party_id%> name="kunde"></center><%
					}
			%></td>
			<td><center>
			<%		for(int j = 0; j <= parties.size() - 1; j++){

						Object parties_partyID = parties.get(j);
						System.out.println("Zaehler j  =" + j);
						System.out.println("Wert aus ArrayList parties" + String.valueOf(parties_partyID));

						if(!vorhanden){
							if(String.valueOf(parties_partyID).equals(String.valueOf(party_id))){
								System.out.println(String.valueOf(parties_partyID) + "stimmt mit " + String.valueOf(party_id) + "überein");

								%><input type="checkbox" value=<%=party_id%> name="check_kunde" checked><%
								break;
							}else{
								System.out.println(String.valueOf(parties_partyID) + "stimmt NICHT mit " + String.valueOf(party_id) + "überein, platziere DUMMY");

								%><input type="checkbox" value=<%=party_id%> name="check_kunde"><%
							}
						}
					}
				 }
			%>
			</td>
			</table>
```

Habt ihr eine Idee wo mein Denkfehler liegt?
Danke für eure Hilfe

Liebe Grüße


----------



## SebiB90 (31. Dez 2007)

ich versteh nicht ganz wie die checkboxen aussehen soll
also in dem beispiel jetzt immer 4 boxen?
wie wärs wenn du das break aus der inneren schleife rausnimmst? dann sollte es klappen


----------



## thefish511 (31. Dez 2007)

Und was sollen 4 Checkboxen nacheinander bringen?
Er will halt eine Checkbox pro Zelle, so wie die Radiobuttons.

Ich hab jetzt grad erst vor ein paar Tagen mit Java angefangen, aber ich würde sagen, dass die Bedingung der 2ten for-Schleife so nicht ganz richtig ist. Die Schleife wird einfach zu oft durchlaufen.


----------



## SebiB90 (31. Dez 2007)

thefish511 hat gesagt.:
			
		

> Er will halt eine Checkbox pro Zelle, so wie die Radiobuttons.


wenn er das wollte, würde er keine 2. inner schleife brauchen -.-


----------



## Marie Curie (31. Dez 2007)

Hi,

also es soll pro Zeile nur jeweils eine Checkbox da sein, das stimmt schon 



> wenn er das wollte, würde er keine 2. inner schleife brauchen -.-


#

Die erste Schleife erstellt die die Zeile und die ersten beiden Zellen. Die zweite Schleife habe ich genommen, damit die Checkbox eben auch noch in die selbe Zeile kommt, wie der Name und der RadioButton. 

Wenn du eine andere Variante hast, bin offen dafür!


```
ber ich würde sagen, dass die Bedingung der 2ten for-Schleife so nicht ganz richtig ist. Die Schleife wird einfach zu oft durchlaufen.
```

Wieso meinst du, dass die Schleife zu oft durchlaufen wird? In der ersten Schleife wird in jedem Durchlauf eine neue ID gewählt, diese wird dann in der zweiten Schleife mit den IDs der Liste verglichen, um zu sehen, ob die ID angeklickt wurde.

Wenn ihr andere Vorschläge habt... gerne her damit 

Liebe Grüße


----------



## SebiB90 (31. Dez 2007)

Marie Curie hat gesagt.:
			
		

> Hi,
> 
> also es soll pro Zeile nur jeweils eine Checkbox da sein, das stimmt schon
> 
> ...


was willst du überhaupt erreichen 
du willst eine checkbox haben, prüfst aber 4 verschiedene parties.
wie soll das funktionieren?

wenn du guggen willst ob er an mindestens 1 teilnimmt. dann musste die leere checkbox nach der inneren schleife machen in einer if abfrage und zwar nur wenn vorhanden false ist.

*Nachtrag:*mir fällt grad auf, du prüfst die variable vorhanden...aber geändert wird sie ja gar net...


----------



## Marie Curie (31. Dez 2007)

Hab grad mal das Bild aktaulisiert 

hab mit der Variabeln einige male rumgespielt... sie zu ändern hat auch nichts gebracht.

Was ich erreichen will ist auf dem Bild zu sehen.


----------



## SebiB90 (31. Dez 2007)

```
for(int j = 0; j <= parties.size() - 1 && !vorhanden ; j++){ 

                  Object parties_partyID = parties.get(j); 
                  System.out.println("Zaehler j  =" + j); 
                  System.out.println("Wert aus ArrayList parties" + String.valueOf(parties_partyID)); 

                 
                     if(String.valueOf(parties_partyID).equals(String.valueOf(party_id))){ 
                        System.out.println(String.valueOf(parties_partyID) + "stimmt mit " + String.valueOf(party_id) + "überein"); 

                        %><input type="checkbox" value=<%=party_id%> name="check_kunde" checked><% 
                        vorhanden = true;
                    
                     }

                }
                if(!vorhanden){ 
                        
                        %><input type="checkbox" value=<%=party_id%> name="check_kunde"><% 
                     }
```
ungetestet


----------



## Marie Curie (1. Jan 2008)

Getestet, funktioniert... riesen Dank  :lol: 

Super! Danke!

Frohes neues Jahr und liebe Grüße wünscht

Marie


----------

