DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
WebForm Listbox verwenden in ASP .NET

Wir haben als Anwendungsfall einen Listbox die mit Werten gefüllt ist. Es sollen dynamisch Werte vom Benutzer hinzugefügt oder entfernt werden.

Sicherlich gibt es einige Lösungsansätze. Hier wird beschrieben wie diese Aufgabe mit einer Textbox und zwei zusätzlichen Buttons Plus und Minus gelöst wird. Bei Plus wird der Wert aus der Textbox in die Liste eingefügt. Bei Click auf Minus wird der Wert aus der Liste entfernt.

Ein Click auf einen Eintrag in die Liste soll den gewählten Wert in der Textbox anzeigen um ihn entweder löschen zu können oder abgeändert wieder hinzuzfügen. Dazu ist es zuerst wichtig bei der Listbox das Proberty AutoPostback zu aktivieren um nach jedem Click auf einen Eintrag die Behandlung am Server machen zu können.
<asp:ListBox id="lstOption" runat="server" Height="134px" Width="237px" AutoPostBack="True"></asp:ListBox>

Bild1:

Der Eventhandler ist dann sehr einfach zu coden. Um auf den gewählten Eintrag zu kommen, steht die Eigenschaft SelectedItem bereit.
Private Sub lstOption_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstOption.SelectedIndexChanged
        txtList.Text = lstOption.SelectedItem.Text
End Sub

Als nächstes soll ein Eintrag eingefügt werden. Wir legen fest ( es liegt in unserer Macht), das das einfügen VOR den gewählten Eintrag erfolgen soll. Dazu gibt es alternativ zum normalerweise eingesetzen Item.Add ein Item.insert, das als Parameter die Postion und den Wert benötigt.

Private Sub cmdPlus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPlus.Click
        lstOption.Items.Insert(lstOption.SelectedIndex, txtList.Text)
End Sub

Der letzte Punkt ist noch einen Eintrag zu entfernen. Vermuten würde man ein "Delete", es heist aber Remove mit dem Wert als Parameter oder RemoveAt mit der Position. Am simpelsten ist die Methode über Remove, da andernfalls die gewählte Position verwendet werden müsste.
Private Sub cmdMinus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMinus.Click
        lstOption.Items.Remove(txtList.Text)
End Sub

Hier tritt in der Praxis auch ein kleines Problem zu Tage. Dieser Code ist nicht besonders gut geeignet um mit doppelten Werten umzugehen. So springt der Cursor immer auf den ersten von zwei gleichen Werten, egal welchen man wählt.

Dies ist aber in der Praxis nicht so häufig, so das hier großmütig farüber hinweggesehen wurde.


     


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 16.05.2002
  Gültig bis: 15.06.2002
1 Ratings
Bewertung: 20,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG