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++