Linq写的Dropdownlist用户控件,递归生成项

如果Dropdownlist绑定一个客户类别,而每个类别有包含小类别,而且级别没限制,我们 要分类显示在Dropdownlist中,每个子级别都比父级别缩进,怎么写呢?

注意,空格不能直接添加到控件中,你必须以Server.HtmlDecode(" ")来设置。

高手不要汗,我是入门级的。

 

参考数据表:

CTTYPE 客户类型表
*CTTYPEID客户类型iDsmallint
NAME客户类型名称varchar
SubOfType客户类型代码smallint

 注意:表中SubofType=0表示根类

 

public partial class DDLType : System.Web.UI.UserControl
    {
        private BFLList BList;
        private IQueryable<myType> Type;
        /// <summary>
        /// 类别ID的属性
        /// </summary>
        private string _TypeID;
        public string TypeID
        {
            get
            {
                return ListType.SelectedValue;
            }

            set
            {
                _TypeID = value;//new ListItem((new BFLList()).GetClientByID(int.Parse(value)).First().NAME));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// 初始化(客户,供应商等)类别控件
        /// </summary>
        /// <param name="type">类别名称</param>
        public void InitType(string type)
        {
            BList = new BFLList();
          
            switch(type.ToUpper())
            {
                case "CLIENT":
                    Type = BList.GetClientTypeAll(); break;
                case"VENDOR":
                    Type = BList.GetVendorTypeAll(); break;
            }
          
            foreach (var c in Type.Where(p => p.SubOfType == (short)0).Select(p => p))
            {

                ListType.Items.Add(new ListItem(c.Name, c.ID.ToString()));
                BindListType(Type, short.Parse(ListType.Items[ListType.Items.Count - 1].Value), "┕┅┅");

            }

            ListType.SelectedIndex = 0;
            ListType.SelectedValue = _TypeID;
        }
        /// <summary>
        /// 递归遍历(客户,供应商等)类型表,并在下拉框中添加信息
        /// </summary>
        public void BindListType(IQueryable<myType> list, short root, string head)
        {
            var types = list.Where(p => p.SubOfType == root).Select(p => p);
            if (types.Count() > 0)
            {
                foreach (var v in types)
                {

                    ListType.Items.Add(new ListItem(v.Name.Insert(0, head), v.ID.ToString()));
                    string blank2 = Server.HtmlDecode("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;") + head;
                    BindListType(list,short.Parse(ListType.Items[ListType.Items.Count - 1].Value), blank2);
                }
               
            }
         
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值