Utilisation avancée de enum.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 828 fois - Téléchargée 33 fois

Contenu du snippet

Bonjour,

J'utilise de temps à autre ENUM.

Il m'arrive de l'utiliser par exemple pour définir le mode actif de ma page en stockant la valeur chaîne dans une zone cachée.
Le problème est que, lors du PostBack, j'avais du mal à retranscrire la valeur texte en variable de mon type « enum ».

Je viens enfin de trouver une solution (il était temps, certains penserons !) et je vous la livre ci-dessous au travers un exemple un peu plus poussé.

Ce code n'est là que pour illustrer des fonctions autour de ENUM, mais ce n'est pas un programme utile. Il s'adresse aux personnes qui connaissent déjà la grande utilité de ENUM en programmation.

Points montrés :
- Obtenir une string à partir d'une valeur de type énumération (Jours.Mardi.ToString)
- Convertir une énumération en tableau de string ([Enum].GetNames(GetType(Jours)))
- Retrouver la valeur du type de l'énumération à partir d'une string ([Enum].Parse(GetType(Jours), "Mardi")).

Source / Exemple :


========================== ASPX =======================
	<body>
		<form id="Form1" method="post" runat="server">
			<asp:DropDownList id="ddlJours" runat="server"></asp:DropDownList>
		</form>
	</body>

=========================== VB ========================
   Enum Jours
      Lundi
      Mardi
      Jeudi
   End Enum

   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

      If Not IsPostBack Then

         With ddlJours
            .DataSource = [Enum].GetNames(GetType(Jours))
            .DataBind()
            .SelectedValue = Jours.Mardi.ToString
         End With

      Else

         Dim LeJourChoisi As Jours
         LeJourChoisi = [Enum].Parse(GetType(Jours), ddlJours.SelectedValue)

         Select Case LeJourChoisi
            Case Jours.Lundi
               '
            Case Jours.Mardi
               '
            Case Jours.Jeudi
               '
         End Select
      End If

   End Sub

Conclusion :


J'espère que ce code simple vous sera claire et profitable.

J'ai remarqué après rédaction que « tno » utilisait une partie de cette astuce dans une de ses contributions VB.

A voir également

Ajouter un commentaire

Commentaires

ViveLeRoi
Messages postés
6
Date d'inscription
samedi 10 décembre 2005
Statut
Membre
Dernière intervention
30 octobre 2010

Bonjour à tous,

Bien sympa ces explications, mais est-ce que quelqu'un sait comment faire pour récupérer dans une property une énum parmi plusieurs, je m'explique :

J'aimerai pouvoir faire quelque chose dans cet esprit :

public class Objet1
public Enum LesNoms As byte
toto
titi
end enum
...
end class

public class Objet2
public Enum LesNoms As byte
Nana
Nene
Nono
Nini
end enum
...
end class

et encore d'autres dans le même genre avec des noms et quantités différents dans leur enum
puis mon objet principal

public class ObjPrincipal
inherits System.Windows.forms.Control
private EnCours as object
Public UneEnum As Enum ' n'est pas valable !

public property() ChoixNom As UneEnum
get
return UneEnum
end get
set(ByVal n As UneEnum)
UneEnum = n
end set
end property
...
public sub New(byval x as byte)
mybase.new()
select case x
case 0
Encours = New objet1()
case 1
Encours = New objet2()
...
end select
UneEnum = Encours.LesNoms
end sub
end class

Résumé : comment une propriété peut elle gérer des enum's différentes ?

Merci d'avance pour ceux qui pourraient résoudre ce problème.

Avec toute mon amitié

ViveLeRoi
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
ok maintenant grace à tes nouveaux commentaire je vois un peu plus l'utilité de ta source :) Au debut je pensais que ta source etait la pour montrer le drop :D

Cyril
cs_Domilo
Messages postés
32
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
22 février 2005

Merci de ta remarque. Je viens d'inscrire quelques informations complémentaires dans la description.

Effectivement il y mille et une façons plus simples d'exploiter un dropdownlist...
Mais sais-tu comment plus simplement retrouver la valeur de type énumération à partir d'une string ?
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
j'arrive pas à saisir l'utilité de ton code, pourquoi faire tout ca alors qu'il y a beaucoup plus simple ?

Cyril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.