部门ID                        单位ID                上级部门名称              部门名称
62e69691-b876                 26522                   26522                    总办公  
b17fb636-47d4                 26522                   62e69691-b876            总支书
b1sasass_47d9                 26522                   62e69691-b876            支书
b1dsa_1sdsad9                26522                   b17fb636-47d4            销售部
............以此类推
这儿的字段都当string处理
显示如下:总办公
                总支书
                     销售部
                支书
结贴率100%
小手上路,高手大侠块来救命.
要显示在  dropdownlist中。最好能给我返回个DATATABLE,能直接绑定数据源.别的方法能实现也可以啊。                  

解决方案 »

  1.   

    http://topic.csdn.net/u/20090619/16/98091f21-2a6f-4079-a1a2-e223c49b0495.html?95596参考……
      

  2.   

    我现在用的项目就是下面这个,看起来还好看:DropDownList无限级分类(灵活控制显示形式)
    http://www.cnblogs.com/chensubo/archive/2008/02/11/1067037.html主要使用递归实现,数据库结构:
    ClassID        ClassName    ParentID
    1        新闻        0    
    2        国内新闻    1
    3        国内社会    1
    4        WEB开发        0
    5        ASP.NET        4
    6        社会民生    2
    最终样式:添加根栏目
    ╋新闻
    ├国内新闻
    ├─社会民生
    ├国内社会
    ╋WEB开发
    ├ASP.NETprotected 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());
        }