DropDownList: Doppelte Einträger vermeiden ?

ThomasAnnuseit

Grünschnabel
Hallo...

...weiß jemand, wie ich es verhindern kann, dass wenn ich einen Eintrag in einer DropDownList anklicke, sich alle in ihr befindenden Einträge nochmals eintragen?

Also wenn z.B. der Inhalt der DDList so aussieht:

Rad
Reifen
Felge
Bolzen

und wenn ich einen Eintrag ausgewählt habe es dann so aussieht:

Rad
Reifen
Felge
Bolzen
Rad
Reifen
Felge
Bolzen

Vielen Dank schonmal...! :-)
 
Hallo,

Das dürfte sehr einfach für Dich zu lösen sein!
Wenn Du eine Auswahl in dem Feld machst wird ein PostBack Ereignis ausgelöst. Das heisst, dass die Informationen, die Du in Deiner Seite angegeben hast an den Server zur Asuwertung geschickt werden.

Das DropDown baut sich aber nur einmal beim laden der Seite auf...(so nehm ich das mal an)

Also solltest Du die Eigenschaft IsPostBack prüfen...ist es ein PostBack, dann wird das DropDown nicht aufgebaut, sonst schon (also beim laden der Seite).

Code:
//Wird beim Laden der Seite ausgeführt
private void Page_Load(object sender, System.EventArgs e)
{
  if(Page.IsPostBack == false){
     buildDropDownEntries()
  }else{
    //do nothing
  }
}

Hoffe das hilft Dir weiter!

Gruß

Alex
 
Hallo... erstmal danke für deine hilfe!
...hab den geposteten code in vb.net umgeschrieben und eingefügt, aber es funktioniert nicht! Kann es sein, das ich "Staedteliste_SelectedIndexChanged" falsche parameter übergebe... kenne mich da kaum mit aus!

'Füllen der DropDownList mit Standorten


Dim i as integer
Dim ListItem as string

For i = 0 To 45

Staedte_Row = myDataSet.Tables(0).Rows(i)

If "Niedersachsen".equals(Staedte_Row(53).toString()) then

If "aktiv".equals(Staedte_Row(50).toString()) Then

Stadt = Staedte_Row(4).toString() & " | " & Staedte_Row(1).toString()

Staedteliste.Items.Add(Stadt)

Staedteliste_SelectedIndexChanged(0,nothing)

End If

End If

Next



End Sub


Sub Staedteliste_SelectedIndexChanged(sender As Object, e As EventArgs)

If Staedteliste.SelectedIndex <> -1 Then

If Stadt.equals(Staedteliste.SelectedItem.Text) then


Label_Art.Text = Staedte_Row(2).toString()
Label_Nummer.Text = Staedte_Row(0).toString()
Label_KurzBezeichnung.Text = Staedte_Row(1).toString()
Label_Anschrift.Text = Staedte_Row(5).toString() & " | " & Staedte_Row(3).toString() & " " & Staedte_Row(4).toString()
Label_Gebäude.Text = Staedte_Row(7).toString()
Label_Raum.Text = Staedte_Row(8).toString()
Label_Status.Text = Staedte_Row(15).toString()


End If

End If

End Sub


Sub Fill_Staedteliste

Staedteliste.DataBind

End Sub


Sub Button1_Click(sender As Object, e As EventArgs)

If Me.IsPostBack = false Then

Fill_Staedteliste

End If

End Sub
 
Hi,

Das kann so auch nicht funktionieren, weil Du das Klick Ereignis damit blockierst.
Üblicherweise ruft man Staedteliste_SelectedIndexChanged(0,nothing) auch nicht selbst auf. HIer wird eigentlich ein vom System generiertes/geworfenes Ereignis gefangen und Verarbeitet. Wenn ich Dich richtig verstehe möchtest Du nach Auswahl eines Bundeslandes in einer Liste, eine passende Städteliste darstellen.

Du brauchst also zwei Listen. Die eine wird beim Start der Anwendung gefüllt (beim Laden der Seite), hier kannst Du den von mir geposteten Code verwenden um dopplungen zu vermeinden.

Nach Auswahl eines Eintrages in der Bundesland-Liste wird dann ein Ereignis ausgelöst, nämlich Bundeslaender_SelectedIndexChanged(....). Diese Methode muss jetzt serverseitig implementiert werden:

1. löschen aller Einträge der Städte-Liste(z.B. staedtelist.entries.clear())
2. Aufbauen der Einträge der Städte-Liste (z.B. buildCityEntries())

Hier Pseudocode:
Code:
OnPageLoad(){
  if(Page.IsPostBack == false){
     buildLaenderList();
  }else{
    //do nothing
  }
}

LaenderList_SelectedIndexChanged(...){
  StaedteList.entries.clear();
  buildStaedteList(NameOfEntry);  //NameOfEntry = Name des Bundeslands
} 

buildLaenderList(){//lesen der EInträge aus DB oder TXT und einfügen}
buildStaedteList(string NameOfEntry){//lesen der Einträge aus DB oder TXT und einfügen}

Sollte so funktionieren (sorry wegen dem Pseudocode, aber ich kenne die Objekte in VisualBasic.NET nicht...only c# rules :-)), wenn ich richtig verstanden habe, was Du möchtest. Schau Dir doch mal in einem TUT oder in einem Buch den Umgang mit Ereignisse an, das macht es Dir noch einfacher!

Viele Grüße

Alex
 
Zurück