IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Comment ma page peut-elle détecter le changement de statut d'un FormView?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut Comment ma page peut-elle détecter le changement de statut d'un FormView?
    Bonjour,

    J'ai une page qui contient un Web User Control qui contient un FormView. Comment ma page peut-elle détecter le changement de statut du FormView de "ReadOnly" à "Insert".

    Quand ce statut change, je veux cacher un autre controle.

    Je ne suis pas très familier avec les EventHandler. Quelqu'un aurait-il une piste?

    Pour le moment, je gère cela sur le prérender de ma page. Mais je voudrais intervenir avant, plus en amont.

    Merki

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Expose un nouvel évènement sur ton UserControl (pour "forwarder" l'évènement ModeChanged du FormView), et ajoute éventuellement aussi une propriété CurrentMode pour rendre accessible celle du FormView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // Déclaration de l'évènement
    public event EventHandler ModeChanged;
     
    // Méthode helper pour déclencher l'évènement
    protected void OnModeChanged()
    {
        EventHandler handler =  ModeChanged;
        if (handler != null)
            handler(this, EventArgs.Empty);
    }
     
    protected void theFormView_ModeChanged(object sender, EventArgs e)
    {
        // Quand l'évènement ModeChange se produit sur theFormView, on le déclenche sur le UserControl
        OnModeChanged();
    }
     
    public FormViewMode CurrentMode
    {
        get { return theFormView.CurrentMode; }
    }
    Autre possibilité, pour éviter de polluer le UserControl avec une propriété pas très utile : crée un nouveau type d'évènement dont le paramètre contiendra le CurrentMode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    // Classe de paramètres de l'évènement
    public class ModeChangedEventArgs : EventArgs
    {
        public ModeChangedEventArgs(FormViewMode mode)
        {
            _mode = mode;
        }
     
        private FormViewMode _mode;
        public FormViewMode Mode
        {
            get { return _mode; }
        }
    }
     
    // Delegate définissant la signature de l'évènement
    public delegate void ModeChangedEventHandler(object sender, ModeChangedEventArgs e);
     
    // Dans le UserControl :
    ...
     
    // Déclaration de l'évènement
    public event ModeChangedEventHandler ModeChanged;
     
    // Méthode helper pour déclencher l'évènement
    protected void OnModeChanged(FormViewMode mode)
    {
        EventHandler handler =  ModeChanged;
        if (handler != null)
            handler(this, new ModeChangedEventArgs(mode));
    }
     
    protected void theFormView_ModeChanged(object sender, EventArgs e)
    {
            // Quand l'évènement ModeChange se produit sur theFormView, on le déclenche sur le UserControl
        // en passant en paramètre le mode actuel
        OnModeChanged(theFormView.CurrentMode);
    }
    Remarque : j'ai déclaré le delegate ModeChangedEventHandler pour l'exemple, mais en l'occurrence ce n'est pas nécessaire, tu peux utiliser le delegate générique EventHandler<T> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler<ModeChangedEventArgs> ModeChanged;

  3. #3
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Merci beaucoup, j'ai pris l'autre possibilité. Ca marche impec'.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/07/2008, 08h41
  2. Réponses: 6
    Dernier message: 10/01/2008, 15h12
  3. Réponses: 19
    Dernier message: 02/10/2006, 17h19
  4. [C#] Comment une thread peut-elle attendre un evenement?
    Par legillou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/07/2006, 15h58
  5. Comment détecter un changement du réglage de voume sonore ?
    Par mjlub dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/01/2004, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo