DropDownList中绑定Treeview的方法

本文介绍了一种在Visual Studio 2005中使用TreeView控件的方法,通过将其绑定到DropDownList来获取选定部门信息。具体实现了从数据库读取部门数据,并递归构建树形结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在vs2005中为了取一个Treeview的返回值到主页面而费了很大的劲也没有解决,无奈之下只好采用DropDownList中绑定Treeview,取出选定项的值。在此把源码发上来,供大家参考一下:

     

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.DDL_Depment.Items.Clear();   //注:如果不加此句则树目录会重复绑定一次
            TreeView treeView = new TreeView();
            bool isExpanded = false;
            string sSelectedData = "";
            BindCategoryTreeVew(treeView, isExpanded, sSelectedData);
        }
    }

 

 

 ///<summary>
    /// Treeview绑定部门表
    ///</summary>
    ///<param name="tvDep">Treeview树</param>   
    ///<retuns>dt返回一个DataTable表</retuns>
    //创建根节点
    public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
    {
        //将获取的数据转换为 一个DataTable

 SqlDataAdapter da = new SqlDataAdapter("select Department_sid,DepartmentName,parent_department_SID,fullNumber,IsCompany from Tb_name", con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        //清空 树的所有节点
        treeView.Nodes.Clear();
        string fullNode = dt.Rows[0]["fullNumber"].ToString();
        //获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组
        DataRow[] rowlist = dt.Select("IsCompany=1");
        if (rowlist.Length <= 0) return;
        foreach (DataRow dr in rowlist)
        {
            //创建根节点
            TreeNode rootNode = new TreeNode();
            //设置根节点的属性
            rootNode.Text = dr["DepartmentName"].ToString();
            //设置根节点的值   
            rootNode.Value = dr["Department_sid"].ToString();
            rootNode.Expanded = isExpanded;
            //获取或设置一个值,该值指示是否选中节点
            rootNode.Selected = true;
            //添加根节点
            //treeView.Nodes.Add(rootNode);
            this.DDL_Tree.Items.Add(new ListItem(rootNode.Text,rootNode.Value));
            CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
        }
    }

    private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
    {
        //选择数据,添加排序表达式
        string ualue = parentNode.Value;
        DataRow[] rowList = dt.Select("parent_department_SID='" + parentNode.Value.ToString() + "'");
        foreach (DataRow row in rowList)
        {
            //创建一个新的节点了
            TreeNode node = new TreeNode();
            node.Text = row["DepartmentName"].ToString();
            node.Value = row["Department_sid"].ToString();
            node.Expanded = isExpanded;
            if (node.Value == sSelecedData)
            {
                node.Selected = true;
            }
            //parentNode.ChildNodes.Add(node);

    //子节点前加入两个空格
            this.DDL_Tree.Items.Add(new ListItem("  "+node.Text, node.Value)); 
            //递归调用,创建其他节点
            CreateChildNode(node, dt, isExpanded, sSelecedData);
        }
    }

转载于:https://www.cnblogs.com/WGQiang/archive/2008/08/29/1279211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值