[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:
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:
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:
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++ ;)