主要使用递归实现,数据库结构:最终样式: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindDrpClass(); } } /// <summary> /// 绑定顶级分类 /// </summary> private void BindDrpClass() { DataTable dt = GetClassList("").Tables[0]; ddlClass.Items.Clear(); ddlClass.Items.Add(new ListItem("添加根栏目", "0")); DataRow[] drs = dt.Select("ParentID= " + 0); foreach (DataRow dr in drs) { string classid = dr["ClassID"].ToString(); string classname = dr["ClassName"].ToString(); //顶级分类显示形式 classname = "╋" + classname; ddlClass.Items.Add(new ListItem(classname, classid)); int sonparentid = int.Parse(classid); string blank = "├"; //递归子分类方法 BindDrpNode(sonparentid, dt, blank); } ddlClass.DataBind(); } /// <summary> /// 绑定子分类 /// </summary> /// <param name="parentid"></param> /// <param name="dt"></param> /// <param name="blank"></param> private void BindDrpNode(int parentid, DataTable dt, string blank) { DataRow[] drs = dt.Select("ParentID= " + parentid); foreach (DataRow dr in drs) { string classid = dr["ClassID"].ToString(); string classname = dr["ClassName"].ToString(); classname = blank + classname; ddlClass.Items.Add(new ListItem(classname, classid)); int sonparentid = int.Parse(classid); string blank2 = blank + "─"; BindDrpNode(sonparentid, dt, blank2); } } /// <summary> /// 数据访问 /// </summary> /// <param name="strWhere">SQL条件</param> /// <returns></returns> public DataSet GetClassList(string strWhere) { StringBuilder strSql = new StringBuilder(); strSql.Append("select * from tb_Class "); if (strWhere.Trim() != "") { strSql.Append(" where " + strWhere); } return DAL.SqlHelper.ExecuteDataset(DAL.SqlHelper.ConnString, CommandType.Text, strSql.ToString()); }