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 :

[C#] probleme avec une fonction recursive


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut [C#] probleme avec une fonction recursive
    bonjour,

    en suivant un post de ce forum, j'ai voulu utiliser une fonction recursive afin de creer un treeview. seulement au lancement de la page, cette derniere n'arrive pas a se charger completement et se bloque. je m'y suis certainement mal pris, mais je ne sais pas trop comment resoudre ce petit soucis.

    je recupere mes donnees a partir d'une procedure:
    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
     
            public DataSet Get_Tree_Data()
             {
     
                OracleCommand cmd = PNSConnection.CreateCommand();
                cmd.Parameters.Clear();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "pns_lookups.get_tree_data";
                cmd.Parameters.Add(new OracleParameter("tree_cur", OracleType.Cursor));
                cmd.Parameters["tree_cur"].Direction = ParameterDirection.Output;
     
                OracleDataAdapter da = new OracleDataAdapter();
                da.SelectCommand = cmd;
     
                DataSet ds = new DataSet();
                da.Fill(ds,"tree_cur");
                return ds;
    }
    voici ma fonction recursive:
    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
     
    private void GetItem(int IdParent, TreeNode node)
        { 
          DataSet ItemMenu = new DataSet();
          ItemMenu = dbaccess.Get_Tree_Data();
     
            foreach (DataRow row in ItemMenu.Tables[0].Rows)
            {
              if (Convert.ToInt32(row["dnod_id_parent"].ToString()) == IdParent)
                {
     
                    TreeNode C_node = new TreeNode();
                    C_node.Text = row["title"].ToString();
                    C_node.Value = row["id"].ToString();
                    node.ChildNodes.Add(C_node);               
                    GetItem(Convert.ToInt32(row["id"].ToString()),C_node);
                }
            }
        }
    et enfin, dans le Page_load, je creer le premier node et j'appelle la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        protected void Page_Load(object sender, EventArgs e)
        {
            dbaccess.connectToDatabase();
            if (!IsPostBack)
            {
                TreeNode node = new TreeNode("NodeParent");
                TVmenu.Nodes.Add(node);
     
                GetItem(0, node);
            }
        }
    voila si quelqu'un pouvait m'eclairer merci d'avance .
    A++

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Dans ce code
    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
     
    private void GetItem(int IdParent, TreeNode node)
        { 
          DataSet ItemMenu = new DataSet();
          ItemMenu = dbaccess.Get_Tree_Data();
     
            foreach (DataRow row in ItemMenu.Tables[0].Rows)
            {
              if (Convert.ToInt32(row["dnod_id_parent"].ToString()) == IdParent)
                {
     
                    TreeNode C_node = new TreeNode();
                    C_node.Text = row["title"].ToString();
                    C_node.Value = row["id"].ToString();
                    node.ChildNodes.Add(C_node);               
                    GetItem(Convert.ToInt32(row["id"].ToString()),C_node);
                }
            }
        }
    Tu recrées et recharges le DataSet à chaque fois, c'est peut être l'origine du problème car ta fonction récursive ne devrait pas être bloquante (présence d'un point de sortie).
    Donc dans un premier temps, crées ton DataSet et charge le une fois pour toute à l'extérieur de ta fonction récursive (dans une variable de classe par exemple).
    Pas de questions techniques par MP

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 150
    Points : 93
    Points
    93
    Par défaut
    merci pour cette info...
    en fait j'ai refait ma fonction, parce que comme ca elle etait infinie

    merci encore

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

Discussions similaires

  1. Probleme avec une fonction de calcul d'un age
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2007, 11h50
  2. Réponses: 5
    Dernier message: 25/09/2006, 11h06
  3. Réponses: 7
    Dernier message: 16/08/2006, 10h55
  4. probleme avec une fonction enable() toute simple !!
    Par K_!!! dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/05/2006, 15h10
  5. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48

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