递归动态生成树

来源:互联网 发布:丰城网络问政有用吗 编辑:程序博客网 时间:2024/05/17 08:12

public void CreateRootTree()
  {
   string strsql="";

   SqlHelper helper=new SqlHelper();

   DataSet ds=new DataSet();

   strsql = "select func_no,func_name,func_url,expanded,node_type from T_FUNC_TREE where parent_func_no='0' and active='Y' order by func_no";

            ds = helper.getDataSet(strsql,null,"DataSet",System.Data.CommandType.Text);

   for (int i=0;i<ds.Tables[0].Rows.Count;i++)
   {
    trvMenu.Nodes.Add(CreateSubTree(Convert.ToInt32(ds.Tables[0].Rows[i]["func_no"]),ds.Tables[0].Rows[i]["func_name"].ToString().Trim(),ds.Tables[0].Rows[i]["func_url"].ToString().Trim(), Convert.ToBoolean(ds.Tables[0].Rows[i]["expanded"]),ds.Tables[0].Rows[0]["node_type"].ToString().Trim()));
   }   
  }

  public TreeNode CreateSubTree(int func_no,string func_name,string func_url,bool expanded,string node_type)
  {
   TreeNode rootNode=new TreeNode();
   SqlHelper helper=new SqlHelper();
   DataSet ds=new DataSet();
   rootNode.Text = func_name;
   rootNode.Type = node_type;
   rootNode.Expanded = expanded;
   rootNode.NavigateUrl = func_url;
         string strsql = "select func_no,func_name,func_url,expanded,node_type from T_FUNC_TREE where parent_func_no='" + func_no + "' and active='Y' ";
            ds = helper.getDataSet(strsql,null,"DataSet",System.Data.CommandType.Text);

   if (ds.Tables[0].Rows.Count > 0)
   {
    TreeNode childNode=new TreeNode();
    for (int i=0;i<ds.Tables[0].Rows.Count;i++)
    {
     childNode = CreateSubTree(Convert.ToInt32(ds.Tables[0].Rows[i]["func_no"]),ds.Tables[0].Rows[i]["func_name"].ToString().Trim(),ds.Tables[0].Rows[i]["func_url"].ToString().Trim(), Convert.ToBoolean(ds.Tables[0].Rows[i]["expanded"]),ds.Tables[0].Rows[0]["node_type"].ToString().Trim());
      if (childNode!=null)
      {
       rootNode.Nodes.Add(childNode);
      }
    }
   }
   return rootNode;
  } 

原创粉丝点击