asp.net 如何实现:点击dropdownlist,下拉框显示类似treeview的节点树,可用鼠标选择节点

解决方案 »

  1.   

                dropDownList1.items.add(new listitem("根节点", "0"));
                dropDownList1.items.add(new listitem("→子节点", "0"));
      

  2.   


    dropdownlist实现树型结构的栏目信息 /// <summary>
            /// 递归绑定数据到ddlChannelList控件上,形成树状结构
            /// </summary>
            /// <param name="dt">数据源</param>
            /// <param name="categoryid">栏目id</param>
            private void BindToChannelList(DataTable dt, int categoryid)
            {
                 //DataView dv = dt.DefaultView;使用这句在asp.net 1.1中会出现"在位置 1 处没有任何行。"的错误,感谢阿耀同学的帮助.
                 DataView dv=new DataView(dt); 
                dv.RowFilter = " ParentID= " + categoryid.ToString(); //过滤
                int layer = 0; //默认为第一层
                foreach (DataRowView drv in dv)
                {
                    layer = int.Parse(drv["Layer"].ToString().Trim()); //取得第几层
                    string span = "";
                    if (categoryid != 0)
                    {
                        for (int i = 0; i < layer; i++)
                        {
                            span += " ";
                        }
                        span += "|╴";//添加前面的空格
                    }
                    ListItem li = new ListItem();
                    li.Text = span + drv["CategoryName"].ToString();
                    li.Value = drv["CategoryID"].ToString();
                    this.ddlChannelList.Items.Add(li);
                    BindToChannelList(dt, Convert.ToInt32(drv["CategoryID"]));
                }
            }
    详细参考..
    http://www.cnblogs.com/xiaoxijin/archive/2008/10/28/1321195.html
      

  3.   

    DIV模拟。样式灵活。要么就用现成控件,网上很多。比如RadControl就包括这个控件。
      

  4.   

    借用第三方控件吧
      JQuery 也能实现你要的效果~
      

  5.   

    http://www.open-open.com/ajax/Tree.htm
      

  6.   

    public class DDLDepartment : DropDownList
      {
      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
      {
      if (value == false) this.Items.RemoveAt(0);
      }
        
      }
      } 
    http://www.codeproject.com/KB/webforms/ASTreeView.aspx
      

  7.   

    给dropdownlist 加个事件  点击的时候弹出DIV然后DIV包含一个treeview 这样效果会好些吧