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 :

factorisation de code


Sujet :

ASP.NET

  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut factorisation de code
    Bonjour a tous,

    je travaille en ce moment sur une page au sein de laquelle je construit dynamiquement un treeview qui me permet d'afficher des données sur des personnes selon de multiples criteres de choix.

    Pour cela, je dispose d'un treeview, contenant 5 Treenodes crées en dur, contenant eux meme 3 a 4 childNodes.

    Pour peupler ces noeuds, j'utilise une methode de ce type:
    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
        Sub PopulateNoeudEnfant(ByVal node As TreeNode)
            Dim MyDataSet As DataSet = RunQuery("SELECT TABLE_ID, TABLE_LIBELLE " _
            & " FROM TABLEX, TABLEY,  " _ 'etc.
            & " WHERE TABLEID=" & node.Value) 'récupération ID du noeud parent
            If MyDataSet.Tables.Count > 0 Then
                'Parcours des colonnes du Dataset
                Dim row As Data.DataRow
                For Each row In MyDataSet.Tables(0).Rows
                    'Création du nouveau noeud.
                    Dim MyNewChildNode As TreeNode = New TreeNode(row("TABLE_LIBELLE").ToString(), row("TABLE_ID").ToString())
                    MyNewChildNode.PopulateOnDemand = True
                    MyNewChildNode.CollapseAll()
                    ' Ajout du nouveau noeud à la collection de noeuds enfants du noeud parents
                    node.ChildNodes.Add(MyNewChildNode)
                Next
            End If
        End Sub
    Or, pour mes 5 Treenode, seuls la requete et le noeud parent changent lors de la création des noeuds enfants,

    Je voudrais donc factoriser mon code de maniere a n'avoir qu'a appeller une fonction a laquelle je passerais simplement des parametres pour alleger sensiblement mon code.
    Mais (parce qu'il y a toujours un Mais) j'ai beaucoup de mal a me representer la maniere dont je dois construire cette fonction, quels parametres lui passer, quoi retourner, ect.

    Pourriez vous m'aiguiller?

    D'avance merci et bonne journée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    tu peux pas mettre tes noeud pere dans une table? je pense que ce serait plus simple...moi c'est ce que j'ai fait.

    Voilà comment j'ai procédé :

    j'ai une sub pour peupler mes noeuds peres qui se peuple sur ontreenodepopulate="ma_sub" et ensuite a chaque noeud pere ajouté j'apelle ma sub ou je rentre en parametre ma node et mon dataset pour peupler tous les childnodes du noeud pere en cours. j'ai un id_pere (qui représente l'id du noeud pere) qui me sert a trouver tous les noeuds enfants avec des requetes. Dans une requete, je liste tous mes projets, et pour tous les projets ayant un id_pere qui correspond avec l'id_noeud en cours je l'ajoute et je recommence par récursivité pour les autres childnodes.

    Et ca marche parfaitement! voila j'espere que ca t'aidera!

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Effectivement j'y ai bien pensé, et c'est le cas pour certaines de mes tables construites selon un schema:
    ID LIBELLE IDPERE ORDRE

    Seulement, certaines des tables que j'utilise n'ont pas ce niveau hierarchique et je ne dois pas y ajouter de reference à l'id parent.

    Je ne peux donc pas proceder de la sorte.

    Se pose donc le probleme (celui que je ne parviens pas a resoudre) de creer une methode qui attendrait en parametre la requete, et si besoin le noeud parent.
    Mais je ne me sors pas de cette galere, il va pourtant falloir que je trouve si je veux eviter d'avoir 50 reader, autant de command, d'ouverture et de fermeture de connexion.

    Un petit coup de main?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    mais tu dis donc que c'est codé en dur, mais auras-tu toujours 5treenodes racine?

    parce que dans ce cas tu le crées dans ton page load ou dans ta sub correspondant au ontreenodepopulate et pour chaque noeud racine que tu crées a la main, t'appelles ta fonction qui va te créer récursivement tous les chilnodes

    je ne répond toujours pas à ta question ??

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    A non pardon, je viens de comprendre ton systeme de tables. Mais si tu veux les charger dynamiquement, tu es obligé d'ajouter un id_pere ou une chose de la sorte. Pq tu n'aurais pas le droit de l'ajouter ?? En mettant dans la base que c'est un champs qui peut etre nul, il n'y a pas de pb...si?

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    effectivement je pourrais l'ajouter, mais je ne dois pas le faire, ordre formel.

    Donc je travaille sur la methode generique a qui passer une requete et ce fichu id selectionné optionel.

    J'avance, j'avance, ca devrait venir, mais un peu d'aide ne me ferait pas de mal

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    Tu pourrais peut-être faire une fonction qui se charge d'ajouter les nodes d'une table où il ny a pas le champ idpere. cmt s'organise ton treeview? est-ce que les tables qui n'ont pas d'idpere se placent tjr au mm endroit ou tjr par rapport a un mm pere ou etc.

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Résolu, à force d'essayer je suis parvenu à ecrire une methode qui attend plusieurs parametres dont certains optionnels (une requete, les différents sqlparameters si besoin est) et qui me permet de remplir dynamiquement mon treeview.

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

Discussions similaires

  1. Factorisation de code graphique
    Par jsebfranck dans le forum Windows Forms
    Réponses: 7
    Dernier message: 01/05/2008, 01h12
  2. [C++] Factorisation de code
    Par xterminhate dans le forum C++
    Réponses: 6
    Dernier message: 07/11/2006, 16h21
  3. factoriser du code
    Par grabriel dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2006, 15h00
  4. Réponses: 7
    Dernier message: 01/08/2006, 11h58
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

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