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

C# Discussion :

Duplication de formulaire


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut Duplication de formulaire
    Bonjour à tous,

    Alors j'ai formulaire de taille importante qui effectue des opérations dans des bases de données.
    Je dois utiliser ce formulaire 2 fois. Une fois pour l'insertion des données et ensuite pour la modification des données de la base.
    Bien que visuellement le formulaire soit identique dans les 2 cas, les méthodes à l'intérieur sont différentes (insertion ou modification).
    Quelle est la manière de faire la plus propre ?
    Moi je saurais le faire de 2 façons:
    -faire 2 formulaires différents avec les bonnes méthodes à chaque fois
    -passer un paramètre "insert" ou "modif" et exécuter les méthodes en fonctions de ce paramètre
    Je suis relativement débutant en POO, je n'ai jamais utilisé l'héritage ou le polymorphisme (je ne vois pas très bien à quoi cela sert d'ailleurs, sûrement à plein de choses), mais si la solution propre à ma question passe par là, ce serait pour moi l'occasion d'apprendre.
    Merci pour vos conseils

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    bonjour

    de toute façon, dans les deux cas, il te faut les méthodes correspondant au comportement en INSERT et en MODIF. Donc, le code fonctionnel sera
    à réaliser...

    Pour moi, un seul formulaire ne me semble pas aberrant. De même que d'utiliser un flag pour savoir dans quel mode tu es ne me semble pas délirant non plus.

    En tout cas, j'obterais pour cette solution plutôt que la duplication car, l'inconvénient de la duplication est que, si tu dois modifier une disposition graphique dans
    l'un, tu dois le faire dans l'autre...

    Mon choix serait: Un seul formulaire et un flag définissant ton état...

    Après, si tu veux simplifier la gestion de l'état, tu peux utiliser des delegate que tu affectes avec la bonne méthode en fonction de ton état.. comme ça, tu pourrais
    avoir à un seul endroit le traitement de l'état.. si tu vois ce que je veux dire.. (c le matin, je suis pas reveillé totalement)

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    une solution courrante, si tu as une clé pour la ligne, c'est avoir une variable privée
    private _IdLigne as long?

    et faire 2 constructeurs

    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
     
    public sub new()
    end sub
     
    public sub new(IdEdit as long)
      _IdLigne = IdEdit
      MthRemplissage
    end sub
     
    private sub MthRemplissage
      /// ici remplir tous les controles avec les valeurs actuelles
    end sub
     
    private sub btnValider_Click(sender as object, e as system.Eventargs)
      if _IdLigne.HasValue = False then
         MthInsert /// méthode qui va faire l'insert
        else
         MthUpdate /// méthode qui va faire l'update
      end if
      me.Dispose
    end sub
    (désolé, le site du convertisseur vb.net / C# est HS)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Oui effectivement çà je sais faire, mais je me demande si c'est une bonne pratique.
    Si j'explore la piste des Delegate (désolé c'est aussi le matin pour moi
    Dans mon code, j'aurai à plusieurs endroits des trucs du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (flag=="insert")
    {
    this.InsertDatas();
    }
    else
    {
    this.ModifyDatas();
    }
    et plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (flag=="insert")
    {
    this.InsertDatasBis();
    }
    else
    {
    this.ModifyDatasBis();
    }
    Ca donnerait quoi avec des Delegate?

Discussions similaires

  1. Duplication de formulaires
    Par Logarithmix dans le forum jQuery
    Réponses: 3
    Dernier message: 25/10/2011, 14h37
  2. duplicate valeurs formulaire
    Par toine62 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2009, 14h23
  3. Rafraichir formulaire après duplication DAO
    Par maxime350 dans le forum IHM
    Réponses: 12
    Dernier message: 13/08/2008, 13h58
  4. Réponses: 2
    Dernier message: 06/02/2007, 11h52
  5. duplication d'une base mdb avec un formulaire????
    Par nicassy dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 20h43

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