62,250
社区成员
 发帖
 发帖 与我相关
 与我相关 我的任务
 我的任务 分享
 分享
<ul>
				<li><a href="?1.0">Item 1.0</a>
					<ul>
						<li><a href="?1.0.0">Item 1.0.0</a></li>
					</ul>
				</li>
				<li><a href="?1.1">Item 1.1</a></li>
				<li><a href="?1.2">Item 1.2</a>
					<ul>
						<li><a href="?1.2.0">Item 1.2.0</a>
						<ul>
							<li><a href="?1.2.0.0">Item 1.2.0.0</a></li>
							<li><a href="?1.2.0.1">Item 1.2.0.1</a></li>
							<li><a href="?1.2.0.2">Item 1.2.0.2</a></li>
						</ul>
					</li>
						<li><a href="?1.2.1">Item 1.2.1</a>
						<ul>
							<li><a href="?1.2.1.0">Item 1.2.1.0</a></li>
						</ul>
					</li>
						<li><a href="?1.2.2">Item 1.2.2</a>
						<ul>
							<li><a href="?1.2.2.0">Item 1.2.2.0</a></li>
							<li><a href="?1.2.2.1">Item 1.2.2.1</a></li>
							<li><a href="?1.2.2.2">Item 1.2.2.2</a></li>
						</ul>
					</li>
					</ul>
				</li>
			</ul>
/// <summary>
        /// 无限级分类绑定树型结构的DropDownList
        /// </summary>
        /// <param name="ddl">DropDownList控件ID</param>
        /// <param name="tbName">分类数据库表名</param>
        /// <param name="classID">分类ID</param>
        /// <param name="className">分类名</param>
        /// <param name="fatherID">父节点ID</param>
        public static void BindDdl(System.Web.UI.WebControls.DropDownList ddl,string tbName,string classID,string className,string fatherID)
        {
            DB db = new DB();
            DataTable dt = db.GetDtBySql("select * from " + tbName);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (row[fatherID].ToString().Trim() == "0")//绑定根节点
                    {
                        ddl.Items.Add(new System.Web.UI.WebControls.ListItem(row[className].ToString(), row[classID].ToString()));
                        BindChild(ddl, dt, row[classID].ToString(),classID,className,fatherID,1);
                    }
                }
            }
        }
        private static void BindChild(System.Web.UI.WebControls.DropDownList ddl, DataTable dt, string id, string classID, string className, string fatherID, int length)
        {
            DataRow[] rows = dt.Select(fatherID + "='" + id + "'", classID);
            for (int i = 0; i < rows.Length; i++)
            {
                ddl.Items.Add(new System.Web.UI.WebControls.ListItem(SpaceLength("┠", length) + rows[i][className].ToString(), rows[i][classID].ToString()));
                BindChild(ddl, dt, rows[i][classID].ToString(), classID, className, fatherID,length+1);
            }
        }
        private static string SpaceLength(string str, int i)
        {
            string space = " ";
            for (int k = 0; k < i; k++)
            {
                if (k == 0)
                {
                    space += str;
                }
                else
                {
                    space = " " + space;
                }
            }
            return space;
        }
private void Page_Load(object sender, System.EventArgs e)
    {
        if(!IsPostBack)
        {
            bind(); 
        }
    }
    public   void   bind() 
    { 
        string   sql="select * from template a where parentid=0 "; 
        DataSet ds=databind(sql);
        if(ds!=null && ds.Tables["tree"].Rows.Count>0)
        {
            foreach(DataRow dr in ds.Tables["tree"].Rows)
            {
                TreeNode tn=new TreeNode();
                tn.Text=dr["name"].ToString();
                tn.Target=dr["id"].ToString();
                TreeView1.Nodes.Add(tn);
                addtree(tn.Target,tn); 
            } 
        }
    }
        //数据绑定
    private DataSet databind(string sql)
    {
        SqlConnection conn=new SqlConnection("server=.;database=master;uid=sa;pwd=sa");
        SqlDataAdapter da=new   SqlDataAdapter(sql,conn); 
        DataSet ds=new DataSet();
        da.Fill(ds,"tree"); 
        return ds;
    }
        //递归查找并加载子节点
    public   void   addtree(string ParentID,TreeNode pNode) 
    { 
        string sql="select * from template where parentid='"+ ParentID +"'";
        DataSet ds=databind(sql);
        if(ds==null || ds.Tables["tree"].Rows.Count<=0)
            return;
        else
        {
            foreach(DataRow dr in ds.Tables["tree"].Rows)
            {
                TreeNode tn=new TreeNode();
                tn.Text=dr["name"].ToString();
                tn.Target=dr["id"].ToString();
                pNode.Nodes.Add(tn);
                addtree(tn.Target,tn); 
            }
        }
    }