2009-04-21 10 views
0

J'ai un site Web dans lequel l'utilisateur doit ajouter et supprimer des titres de la page principale. Les titres sont stockés dans une base de données avec une colonne intitulée «Affichage» (vrai ou faux) qui décide si les titres apparaissent. Je veux que l'utilisateur ait la possibilité d'ajouter ou de supprimer des titres de la page principale, alors j'ai créé une autre page qui crée une table de tous les titres avec une liste déroulante contenant 'Activer' et 'désactiver'. Je souhaite que ces listes déroulantes fonctionnent lorsque l'utilisateur modifie la valeur dans la liste déroulante, la base de données sera mise à jour. Seulement je ne peux pas trouver comment donner aux listes déroulantes un événement sur le changement.Evénement On Change pour la liste déroulante créée dynamiquement VB.NET

Des idées? Est-ce que j'y vais de la bonne façon ou y a-t-il une meilleure façon de faire?

Répondre

1

D'abord, pour faire votre demande réelle Vous devez définir les listes déroulantes à autopostback, et ajouter un gestionnaire pour obtenir le valeur et mettre à jour les données, IE (même si au minimum vos listes déroulantes seraient dans un répéteur, ou DataGrid)

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 

une façon plus facile, si vous accédez à SQL est d'utiliser directement un DataGrid et DataBind à votre SQL question.

0

D'abord; Personnellement, j'utiliserais des cases à cocher pour fournir une interface utilisateur pour une valeur true/false. Vous pouvez gérer cela de deux manières: soit vous utilisez les contrôles ASP.NET (< asp: CheckBox .../>) ou les contrôles HTML simples (< input type = "checkbox" .../>). Dans le cas de l'utilisation des contrôles ASP.NET, vous pouvez simplement double-cliquer sur le contrôle (en mode Création) afin d'avoir un gestionnaire d'événements pour l'événement CheckedChanged à créer pour vous. Dans le cas de l'utilisation d'un élément d'entrée HTML, vous devrez gérer l'événement onclick du côté client à l'aide de JavaScript et demander au JavaScript de lancer un appel AJAX ou similaire afin que le serveur puisse mettre à jour la base de données. Je dirais que l'approche ASP.NET est plus simple.

0

La méthode la plus simple pour vous est d'utiliser simplement un DataGrid, vous pouvez alors gérer facilement l'événement. Comme alternative, puisque vous faites simplement une option «show» ou «Hide», vous pouvez simplement utiliser des boutons, ce qui pourrait fournir une meilleure interface utilisateur. (Je trouve cela vrai en raison du défilement accidentel des éléments de liste déroulante avec une souris à molette dans certains navigateurs)

0

Dans le code où vous créez vos listes déroulantes, ajoutez ceci:

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

Dim oDropDown as New DropDown 

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

AddHandler oDropDown.SelectedIndexChanged, _ 
AddressOf oDropDown_SelectedIndexChanged 

Normalement, vous ajoutez un menu déroulant à votre projet à partir de la boîte à outils, et vous pouvez utiliser le menu déroulant sous CodeView pour sélectionner l'événement SelectedIndexChanged . Nous devons le faire manuellement dans cette instance, alors créez votre sous-programme:

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 

Hope that helps!

Questions connexes