谁能给我个树形菜单(递归)
可以无限制增加的

解决方案 »

  1.   

     public void CreateTreeview(DataSet dstaset)
            {
                DataView dv = new DataView();
                dv.Table = dstaset.Tables[0];
                dv.RowFilter = "Modul_ParentItme=0";
               
                foreach(DataRowView  Row in dv)
                {
                    TreeNode t1 = new TreeNode();
                    t1.Text = Row["Modul_Name"].ToString();
                    t1.Value = Row["Modul_Itme"].ToString();
                    AddTree(dstaset,t1);
                    this.TreeView1.Nodes.Add(t1);
                }
            
            }
            public void AddTree(DataSet dataset ,TreeNode t)
            {
                DataView dv = new DataView();
                dv.Table = dataset.Tables[0];
                dv.RowFilter = "Modul_ParentItme="+int.Parse(t.Value.ToString())+"";
                foreach (DataRowView Row in dv)
                {
                    TreeNode  t2=new TreeNode ();
                    t2.Text = Row["Modul_Name"].ToString();
                    t2.Value = Row["Modul_Itme"].ToString();
                    AddTree(dataset, t2);
                    t.ChildNodes.Add(t2);
                   
                }
               
                
            }
            public DataSet GetDataSet()
            {
                using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123456;database=shzhw"))
                {
                    string sql = "GetTree"; 
                    SqlCommand com = new SqlCommand(sql,con);
                    com.CommandType = CommandType.StoredProcedure;
                    SqlParameter[] parm = new SqlParameter[] {new SqlParameter("@sessionid",1) };
                    com.Parameters.AddRange(parm);
                    SqlDataAdapter da = new SqlDataAdapter(com);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    return ds;
                }
             
                
                    
            }
      

  2.   

    http://blog.csdn.net/baby97/archive/2009/06/18/4278376.aspx
     Ajax的无刷新树型结构
    http://blog.csdn.net/baby97/archive/2009/06/09/4254806.aspx
    TreeView-无限级树及用户权限的设置
      

  3.   

        public int SimpleBindTreeView(TreeView TV, int parentID)//DataBoundControl
        {
            return SimpleBindTreeNode(TV, null, parentID);
        }
        public int SimpleBindTreeNode(TreeView TV, TreeNode TN, int ParentID)
        {
            try
            {
                DataTable dt = MyDoSql.GetDt("select Id,ParentID,ItemText,Class from CM_MenuItem where  ParentID=" + ParentID + " order by OrderIndex asc,id asc");
                if (TV.Nodes.Count == 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode oTN = new TreeNode(dt.Rows[i]["ItemText"].ToString(), dt.Rows[i]["Id"].ToString());
                        oTN.SelectAction = TreeNodeSelectAction.Expand;
                        TV.Nodes.AddAt(i, oTN);
                        SimpleBindTreeNode(TV, oTN, int.Parse(oTN.Value));
                    }
                }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode oTN = new TreeNode(dt.Rows[i]["ItemText"].ToString(), dt.Rows[i]["Id"].ToString());
                        oTN.Target = "mainFrame";
                        oTN.SelectAction = TreeNodeSelectAction.Expand;
                        TN.ChildNodes.AddAt(i, oTN);
                        SimpleBindTreeNode(TV, oTN, int.Parse(oTN.Value));
                    }
                }
                return 1;
            }
            catch
            {
                return 0;
            }
        }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode oTN = new TreeNode(dt.Rows[i]["ItemText"].ToString(), dt.Rows[i]["Id"].ToString());
                        oTN.Target = "mainFrame";
                        oTN.SelectAction = TreeNodeSelectAction.Expand;
                        TN.ChildNodes.AddAt(i, oTN);
                        SimpleBindTreeNode(TV, oTN, int.Parse(oTN.Value));
                    }
                }
                return 1;
            }
            catch
            {
                return 0;
            }
        }
      

  4.   

    上面的帖子不算,下面重发    public int SimpleBindTreeView(TreeView TV, int parentID)//DataBoundControl
        {
            return SimpleBindTreeNode(TV, null, parentID);
        }
        public int SimpleBindTreeNode(TreeView TV, TreeNode TN, int ParentID)
        {
            try
            {
                DataTable dt = MyDoSql.GetDt("select Id,ParentID,ItemTextfrom 
    CM_MenuItem where  ParentID=" + ParentID + " order by OrderIndex asc,id asc");            if (TV.Nodes.Count == 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode oTN = new TreeNode(dt.Rows[i]["ItemText"].ToString(),
     dt.Rows[i]["Id"].ToString());
                        oTN.SelectAction = TreeNodeSelectAction.Expand;
                        TV.Nodes.AddAt(i, oTN);
                        SimpleBindTreeNode(TV, oTN, int.Parse(oTN.Value));
                    }
                }
                else
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode oTN = new TreeNode(dt.Rows[i]["ItemText"].ToString(), dt.Rows[i]["Id"].ToString());
                        oTN.Target = "mainFrame";
                        oTN.SelectAction = TreeNodeSelectAction.Expand;
                        TN.ChildNodes.AddAt(i, oTN);
                        SimpleBindTreeNode(TV, oTN, int.Parse(oTN.Value));
                    }
                }
                return 1;
            }
            catch
            {
                return 0;
            }
        }
      

  5.   

      DataTable dt = MyDoSql.GetDt("select Id,ParentID,ItemTextfrom 
    CM_MenuItem where  ParentID=" + ParentID + " order by OrderIndex asc,id asc");
    每次  都和数据库打交道  没什么效率吧