using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;using DotNetNuke;
using DotNetNuke.Common;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Modules.Actions;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Entities.Users;
using DotNetNuke.Security;
using DotNetNuke.Security.Membership;
using DotNetNuke.Security.Permissions;
using DotNetNuke.Services.Exceptions;
using DotNetNuke.Services.Localization;
using DotNetNuke.UI.UserControls;
using DotNetNuke.UI.WebControls;namespace UCP.WebControls
{
    [DefaultProperty("Text"), ToolboxData("<{0}:DepartDropDown runat=server></{0}:DepartDropDown>")]
    public class DepartDropDown : System.Web.UI.WebControls.DropDownList, INamingContainer
    {
        private string toadd = "|-";
        CustomerControlInfo info = null;        public DepartDropDown()
        {
            this.Items.Add(new ListItem("请选择部门", "0"));
            InitDepartDropDown(DepartID);
        }
        private int _DepartID;
        public int DepartID
        {
            get { return _DepartID; }
            set
            {
                _DepartID = value;
            }
        }
        private void InitDepartDropDown(int ParentDept)
        {
            int OwnerUserId = GetOwnerUserID();
            SqlDataReader reader = CustomerControlController.GetCustomerControlList(ParentDept, OwnerUserId);
            while (reader.Read())
            {
                this.Items.Add(new ListItem(toadd + " " + reader[1].ToString(), reader[0].ToString()));
                toadd += "─┴";
                this.InitDepartDropDown(Convert.ToInt32(reader[0].ToString()));
                toadd = toadd.Substring(0, toadd.Length - 2);
            }
            reader.Close();        }        /// <summary>
        /// 获取当前用户的上级用户id
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        private int GetOwnerUserID(int UserId)
        {
            int _OwnerUserID = DataCache.GetCache<int>(string.Format("SettingOwnerUserID{0}", UserId));
            if (_OwnerUserID == null || _OwnerUserID <= 0)
            {
                _OwnerUserID = new UCP.Library.Customer.CustomerFacade().GetOwnerUserIDFromCustomer(UserId);
                DataCache.SetCache(string.Format("SettingOwnerUserID{0}", UserId), _OwnerUserID);
            }
            return _OwnerUserID;
        }        /// <summary>
        ///  获取当前用户的上级用户id
        /// </summary>
        /// <returns></returns>
        private int GetOwnerUserID()
        {
            int UserId = PortalSettings.Current.UserId;
            return GetOwnerUserID(UserId);
        }
    }
}
代码如上, 这是个封装控件。可以运行,但创建时会在页面出现控件出错..... 运行可以显示出来 但因为调用方法不方便 所以要找出错误