征集比较有效率的无限分类例子!!!!谢谢!

解决方案 »

  1.   

    namespace wxfj
    {
        class Public_Fun
        {
            #region[公共变量] 
            DataSet DS;
            DataTable DT;
            SQL_Link Link = new SQL_Link();
            bool Tree_Node_P = false;
            #endregion        #region[函数] [TreeView递归函数]         #region [函数] [树型2级显示]
            public void Fun_Tree(TreeView TREE,SqlConnection Link_Conn)
            {
                DS = Link.SQL_Select("select * from Basic_Bm", Link_Conn);
                DT = DS.Tables[0]; 
                if (Tree_Node_P == false)
                {
                    foreach (DataRow DR in DT.Rows)
                    {
                        if (DR.ItemArray[1].ToString() == "0")                     {
                            TreeNode TN = new TreeNode();
                            TN.Text = DR.ItemArray[0].ToString();
                            TREE.Nodes.Add(TN);
                        }                 }
                    Tree_Node_P = true;
                }            foreach (DataRow DR_2 in DT.Rows)
                {
                    foreach (TreeNode TN_2 in TREE.Nodes)                 {
                        if (DR_2.ItemArray[1].ToString() == TN_2.Text)
                        {
                            TreeNode TN_3 = new TreeNode();
                            TN_3.Text = DR_2.ItemArray[0].ToString();                         TN_2.Nodes.Add(TN_3);
                            Fun_Tree_2(TN_3);
                        }
                    }
                }
            }
            #endregion        #region [函数] [树型>3级递归] 
            public void Fun_Tree_2(TreeNode T_Name)
            {
                foreach (DataRow DR_2 in DT.Rows)
                {
                    if (DR_2.ItemArray[1].ToString() == T_Name.Text) 
                    {
                        TreeNode TN_3 = new TreeNode();
                        TN_3.Text = DR_2.ItemArray[0].ToString();
                        T_Name.Nodes.Add(TN_3);
                        Fun_Tree_2(TN_3); 
                    }
                }
            }
              }
    }
      

  2.   

    用TreeView来做的:
        protected void BindTree()
        {
            TreeNode node = new TreeNode();   //这里是创建一个根节点,就是dome中看到的Root   
            node.Text = "Root";
            CreateChildTree(node, 0);
           TreeView1.Nodes.Add(node);
        }    protected void CreateChildTree(TreeNode _parentNode, int _parentID)
        {
            using (SqlConnection _conn = new SqlConnection(music.constr))
            {
                SqlCommand _comm = new SqlCommand();
                string sql = "select * from menu where rootid=@rootid";
                _comm.Parameters.Add("@rootid", SqlDbType.Int).Value = _parentID;
                _comm.CommandText = sql;
                _comm.Connection = _conn;
                _conn.Open();
                using (SqlDataReader r = _comm.ExecuteReader())
                {
                    while (r.Read())
                    {
                        TreeNode _node = new TreeNode(r["title"].ToString());
                        CreateChildTree(_node, (int)r["ID"]);  //递归出子节点   
                        _parentNode.ChildNodes.Add(_node);
                    }
                }
            }
        }