wie eine unbekannte Anzahl DropDownList Felder durchlaufen?

24/11/2009 - 17:40 von Tamara Mikes | Report spam
Salü alle zusammen

Ich habe in einem Panel (PanelSpalten) eine mir unbekannte Anzahl DropDown
Elemente erzeugt. Nun möchte ich wissen, welchen Wert der Benutzer in
welchem Dropdownfeld ausgesucht hat. Dazu hàtte ich mir ungefàhr folgenden
Code vorgestellt:

string WertWahl;
int i;
Foreach(DropDownList ddl in PanelSpalten) {
i++;
WertWahl += i.ToString() + "-" + ddl.SelectedItem + ";"
}

Als Ergebnis würde ich dann in WertWahl sowas wie "1-0;2-5;3-1" erwarten.
Aber leider happert es schon in der Foreach weil PanelSpalten nicht mit
Foreach durchlaufen werden kann.

Weiss jemand eine bessere Idee wie ich zu meiner Lösung komme? Ich muss
wissen welchen Wert der Anwender in der unbekannten Anzahl DropDownFelder
ausgewàhlt hat.

Vielen Dank für Ideen
Gruss Tamara

PS: Im folgenden der Code (Auszug) mit welchem ich die DropDowns erzeugt
habe.


ArrayList alSpaltenNamen = new ArrayList();
alSpaltenNamen.Add("Nicht importieren");

foreach (DataColumn dc in DatenDT.Columns)
{
if(dc.ColumnName != "datID" && dc.ColumnName !="ImportNr"){
alSpaltenNamen.Add(dc.ColumnName.ToString());
}
}
#endregion

//DropDownfelder erzeugen
PanelSpalten.Controls.Add(new LiteralControl("<table><tr>"));
for (int i = 0; i < dataTable.Columns.Count; i++)
{
PanelSpalten.Controls.Add(new LiteralControl("<td>Spalte" +
i.ToString()+"<br>"));

DropDownList ddl = new DropDownList();
ddl.DataSource = alSpaltenNamen;
ddl.DataBind();
PanelSpalten.Controls.Add(ddl);

PanelSpalten.Controls.Add(new LiteralControl("</td>"));
}
PanelSpalten.Controls.Add(new LiteralControl("</tr></table>"));
}
 

Lesen sie die antworten

#1 Michael Kugler
24/11/2009 - 18:34 | Warnen spam
Hallo Tamara,

das sieht nach asp.net aus und das was ich dir jetzt sage wird Dich
vermutlich nicht begeistern:

Wenn es mit .Net sein soll kannst Du kannst Dir mühselig mit RegEx die Daten
aus dem Seitencode rausbasteln oder Du musst die Controls wieder (mit der
gleichen ID) ziemlich am Anfang erzeugen (spàtestens im Page_init). Google
mal nach dynamischen Controls
Ansonsten kannst Du evtl auch mit Javascript getElementsByTagName die
Spalten abgrasen und das Ergebnis an eine PageFunction übergeben

Schöne Grüße

Michael Kugler

"Tamara Mikes" schrieb im Newsbeitrag
news:
Salü alle zusammen

Ich habe in einem Panel (PanelSpalten) eine mir unbekannte Anzahl DropDown
Elemente erzeugt. Nun möchte ich wissen, welchen Wert der Benutzer in
welchem Dropdownfeld ausgesucht hat. Dazu hàtte ich mir ungefàhr folgenden
Code vorgestellt:

string WertWahl;
int i;
Foreach(DropDownList ddl in PanelSpalten) {
i++;
WertWahl += i.ToString() + "-" + ddl.SelectedItem + ";"
}

Als Ergebnis würde ich dann in WertWahl sowas wie "1-0;2-5;3-1" erwarten.
Aber leider happert es schon in der Foreach weil PanelSpalten nicht mit
Foreach durchlaufen werden kann.

Weiss jemand eine bessere Idee wie ich zu meiner Lösung komme? Ich muss
wissen welchen Wert der Anwender in der unbekannten Anzahl DropDownFelder
ausgewàhlt hat.

Vielen Dank für Ideen
Gruss Tamara

PS: Im folgenden der Code (Auszug) mit welchem ich die DropDowns erzeugt
habe.


ArrayList alSpaltenNamen = new ArrayList();
alSpaltenNamen.Add("Nicht importieren");

foreach (DataColumn dc in DatenDT.Columns)
{
if(dc.ColumnName != "datID" && dc.ColumnName !="ImportNr"){
alSpaltenNamen.Add(dc.ColumnName.ToString());
}
}
#endregion

//DropDownfelder erzeugen
PanelSpalten.Controls.Add(new LiteralControl("<table><tr>"));
for (int i = 0; i < dataTable.Columns.Count; i++)
{
PanelSpalten.Controls.Add(new LiteralControl("<td>Spalte" +
i.ToString()+"<br>"));

DropDownList ddl = new DropDownList();
ddl.DataSource = alSpaltenNamen;
ddl.DataBind();
PanelSpalten.Controls.Add(ddl);

PanelSpalten.Controls.Add(new LiteralControl("</td>"));
}
PanelSpalten.Controls.Add(new LiteralControl("</tr></table>"));
}





Ähnliche fragen