2009-04-21 8 views
0

Ich habe eine Website, wo der Benutzer benötigt, um Schlagzeilen von der Hauptseite hinzufügen und entfernen. Die Überschriften werden in einer Datenbank mit einer Spalte mit dem Titel "Anzeige" (wahr oder falsch) gespeichert, die entscheidet, ob die Überschriften angezeigt werden. Ich möchte, dass der Benutzer Schlagzeilen von der Hauptseite hinzufügen oder entfernen kann, also hat er eine andere Seite erstellt, die eine Tabelle mit allen Überschriften zusammen mit einer Dropdown-Liste erstellt, die 'Aktivieren' und 'Deaktivieren' enthält. Ich möchte, dass diese Dropdown-Listen funktionieren, wenn der Benutzer den Wert in der Dropdown-Liste ändert, wird die Datenbank aktualisiert. Nur kann ich nicht finden, wie man die Drop-Down-Listen auf Change-Event gibt.On Change-Ereignis für dynamisch erstellte Drop-down-Liste VB.NET

Irgendwelche Ideen? Gehe ich den richtigen Weg oder gibt es einen besseren Weg, dies zu tun?

Antwort

1

Zuerst, um Ihre eigentliche Anfrage zu tun Sie würden die Dropdown-Menüs auf Autopostback setzen und einen Handler hinzufügen, um zu erhalten Wert und die Daten aktualisieren, IE (obwohl mindestens Ihre Dropdown-Listen in einem Repeater oder Datenraster sein würde)

Private Sub SetupDropdowns() 
     Dim pDropDown As New DropDownList 
     pDropDown.Items.Add("Yes") 
     pDropDown.Items.Add("No") 
     pDropDown.AutoPostBack = True 
     AddHandler pDropDown.SelectedIndexChanged, AddressOf pDropDown_SelectedIndexChanged 
    End Sub 

    Private Sub pDropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim value As String = CType(sender, DropDownList).SelectedValue 
'Do something with value 
    End Sub 

ein einfacher Weg, wenn Sie SQL direkt zugreifen ist ein Datagrid zu verwenden und databind es zu Ihrem SQL Abfrage.

0

Zuerst; persönlich würde ich Kontrollkästchen für die Bereitstellung einer Benutzeroberfläche für einen True/False-Wert verwenden. Sie können dies auf zwei Arten behandeln: Entweder Sie verwenden ASP.NET-Steuerelemente (< asp: CheckBox .../>) oder einfache HTML-Steuerelemente (< input type = "checkbox" .../>).

Bei Verwendung der ASP.NET-Steuerelemente können Sie einfach auf das Steuerelement doppelklicken (in Entwurfsansicht), damit ein Ereignishandler für das CheckedChanged-Ereignis für Sie erstellt werden kann. Wenn Sie ein HTML-Eingabeelement verwenden, müssen Sie das onclick-Ereignis auf der Clientseite mithilfe von JavaScript verarbeiten und das JavaScript einen AJAX-Aufruf oder Ähnliches ausführen lassen, damit der Server die Datenbank aktualisieren kann. Ich würde sagen, dass der ASP.NET-Ansatz einfacher ist.

0

Wahrscheinlich ist die einfachste Methode, einfach ein DataGrid zu verwenden. Sie können das Ereignis dann problemlos verarbeiten.

Als eine Alternative, da Sie einfach eine "Show" oder "Hide" -Option tun, könnten Sie einfach Tasten verwenden, die eine bessere Benutzeroberfläche bieten könnten. (Ich finde das wahr wegen des versehentlichen Scrollens von Dropdown-Listenelementen mit einer Scrollrad-Maus in einigen Browsern)

0

In dem Code, wo Sie Ihre Dropdown-Listen erstellen, fügen Sie diese:

''// You already have this code... 

Dim oDropDown as New DropDown 

''// Whatever other declarations you need... 

AddHandler oDropDown.SelectedIndexChanged, _ 
AddressOf oDropDown_SelectedIndexChanged 

Normalerweise Sie ein Dropdown zu einem Projekt aus der Toolbox hinzufügen, und Sie können das Dropdown-Menü unter der Codeansicht verwenden, um das SelectedIndexChanged Ereignis auszuwählen . Wir müssen dies in dieser Instanz manuell tun, also erstellen Sie Ihre Unterroutine:

Public Sub oDropDown_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    ''// Do whatever you need to do here 

    ''// I sometimes do this to make code manipulation easier: 
    Dim _sender as DropDown = CType(sender, DropDown) 

End Sub 

Hoffe, dass hilft!