我用sqldatareader 查询出相关信息后,放入IList<实体>中。
我想实现  树形  的下拉列表 请问如何实现(请贴上原代码)不够加分都可以,只有能解决,有源代码。

解决方案 »

  1.   

    这个跟IList没啥关系,ILis只是数据源
    按规律递归添加
    显示文本,下级文本前可以加—
      

  2.   

    [size=11px][size=10px]
    //实体层
     /// <summary>
        /// 实体类Sys_Depart 。(属性说明自动提取数据库字段的描述信息)
        /// </summary>
        [Serializable]
        public class Sys_Depart
        {
            public Sys_Depart()
            { }
            #region Model
            private int _oid;
            private string _deptid;
            private string _deptname;
            private string _shortname;
            private Guid _parentid;
            private string _re;
            /// <summary>
            /// 系统编号(自增)
            /// </summary>
            public int OID
            {
                set { _oid = value; }
                get { return _oid; }
            }
            /// <summary>
            /// 组织机构ID
            /// </summary>
            public string DeptID
            {
                set { _deptid = value; }
                get { return _deptid; }
            }
            /// <summary>
            /// 组织机构名称
            /// </summary>
            public string DeptName
            {
                set { _deptname = value; }
                get { return _deptname; }
            }
            /// <summary>
            /// 组织机构简称
            /// </summary>
            public string ShortName
            {
                set { _shortname = value; }
                get { return _shortname; }
            }
            /// <summary>
            /// 上级ID
            /// </summary>
            public Guid ParentID
            {
                set { _parentid = value; }
                get { return _parentid; }
            }
            /// <summary>
            /// 备注
            /// </summary>
            public string Re
            {
                set { _re = value; }
                get { return _re; }
            }
            #endregion Model    }//数据层的方法
     public IList<Sys_Depart> getlist()
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT [OID],[DeptID],[DeptName],[ShortName],[ParentID],[Re]");
                sb.Append(" FROM [dbo].[Sys_Depart] ");          
             
                SqlParameter[] PMS = null;
                IList<Sys_Depart> listEntity = new List<Sys_Depart>();
                Sys_Depart Entity= null;
                using (SqlDataReader Dr = (SqlDataReader) this.Session.ExecuteReader(CommandType.Text, sb.ToString(), PMS))
                {
                   while (Dr.Read())
                    {
                        Entity = new Sys_Depart();
                        if (!ComFun.IsDBNull(Dr["OID"]))//comFun.IsDBNull是自己写的函数,是否为空
                        {
                            Entity.OID =int.Pase(Dr["OID"].ToString());
                        }
                        if (!ComFun.IsDBNull(Dr["DeptID"]))
                        {
                            Entity.DeptID = Dr["DeptID"].ToString();
                        }
                        if (!ComFun.IsDBNull(Dr["DeptName"]))
                        {
                            Entity.DeptName = Dr["DeptName"].ToString();
                        }
                        if (!ComFun.IsDBNull(Dr["ShortName"]))
                        {
                            Entity.ShortName = Dr["ShortName"].ToString();
                        }
                        if (!ComFun.IsDBNull(Dr["ParentID"]))
                        {
                            Entity.ParentID = new Guid(Dr["ParentID"].ToString());
                        }
                        if (!ComFun.IsDBNull(Dr["Re"]))
                        {
                            Entity.Re = Dr["Re"].ToString();
                        }
                        listEntity.Add(Entity);
                         
                    }
                    if (!Dr.IsClosed)
                        Dr.Close();
                }
                return listEntity;
                   
            }
    现在我想实现ILIST<实体> 用树形方式的下拉列表显示!!!!!!!!
      

  3.   

     protected void Page_Load(object sender, EventArgs e)
            {
                List<int> list = new List<int>();
                list.Add(1);
                list.Add(2);
                list.Add(3);
                list.Add(4);
                list.Add(5);
                DropDownList1.DataSource = list;
                DropDownList1.DataBind();
            }
      

  4.   

     protected void Page_Load(object sender, EventArgs e)
            {
                IList<int> list = new List<int>();
                list.Add(1);
                list.Add(2);
                list.Add(3);
                list.Add(4);
                list.Add(5);
                DropDownList1.DataSource = list;
                DropDownList1.DataBind();
            }
      

  5.   

    额 数据库中都有父类ID了 
    你就把父类的ID用ADD添加上 然后子类的文件用递归添加
      

  6.   

        private void TreeViewBind() { for (int i = 0; i < List.Count; i++) { if (List[i].ParentID == null) { TreeNode level1Node = new TreeNode(); level1Node.Text = List[i].Name; level1Node.Value = List[i].ID.ToString(); tv.Nodes.Add(level1Node); InitialTree(level1Node, List[i].ID);
                    }
                }
            }
    //递归的方法
    private void InitialTree(TreeNode parentNode, int Id)
            {
                for (int i = 0; i < List.Count; i++)
                {
                    if (List[i].ID == parentId)
                    {
                        TreeNode childNode = new TreeNode();
                        childNode.Text = List[i].Name;
                        childNode.Value = List[i].ID.ToString();
                       
                        InitialTree(childNode, List[i].ID);
                        parentNode.ChildNodes.Add(childNode);
                    }
                }
            }List是查询出的数据 
      

  7.   


        public class DDLDepartment : DropDownList
        {
            private bool _blank;        public DDLDepartment()
            {
                bind(this, 0);
                this.Items.Insert(0, new ListItem("==请选择==", ""));
            }        public void bind(DropDownList ddlDepartment, int parent)
            {
                IList<Department> deptlist = DepartmentBLL.SelectChild(parent);
                foreach (Department dept in deptlist)
                {
                    string text = new string(' ', dept.Depth - 1);
                    text += "└" + dept.DeptName;
                    ddlDepartment.Items.Add(new ListItem(text, dept.DeptId.ToString()));
                    bind(this, dept.DeptNo);
                }
            }        public bool Blank
            {
                set
                {
                    _blank = value;
                    if (value == false) this.Items.RemoveAt(0);
                }
                get
                {
                    return _blank;
                }
            }
        }
    Department为实体类