zoukankan      html  css  js  c++  java
  • winform中生成TreeView树

    无论是webform还是winform,TreeView都是常用功能。使用递归方法很方便。

    下面分享一个小实例。

    数据库中3个字段,分别是:ID,itemType_name,itemType_PID

    private void itemType_Load(object sender, EventArgs e)
            {
                dataBind();
            }
    
    
            private void dataBind()
            {
    
                //获取数据
                string sql = "select * from itemType order by itemType_paixu";
    
                DB db = new DB();
                string _msg = "";
                DataTable DT = db.GetDt(sql, out _msg);
                //
    
                treeView1.Nodes.Clear();
    
                //添加顶节点
                TreeNode tempNode = new TreeNode();
                tempNode.Text = "商品类别";
                tempNode.Name = "0";
                treeView1.Nodes.Add(tempNode);
                //
    
                nodeBind(treeView1, DT, "0", tempNode);
                treeView1.ExpandAll();
                //
            }
    
            public void nodeBind(TreeView _treeView, DataTable _dt, string _filter, TreeNode _pNode)
            {
    
                //循环构建树
                string sFilter = "itemType_PID=" + _filter;
                TreeNode parentNode = _pNode;
    
                DataView dv = new DataView(_dt);
    
                dv.RowFilter = sFilter;
                if (dv.Count > 0)
                {
                    foreach (DataRowView drv in dv)
                    {
                        TreeNode tempNode = new TreeNode();
    
                        tempNode.Text = drv["itemType_name"].ToString();
                        tempNode.Name = drv["ID"].ToString();
    
    
                        if (parentNode != null)
                            parentNode.Nodes.Add(tempNode);
                        else
                            _treeView.Nodes.Add(tempNode);
    
                        nodeBind(_treeView, _dt, drv["ID"].ToString(), tempNode);
                    }
                }
            }
    

      上面这个例子是有固定根节点的,下面这个例子是没有根节点的,递归构建更方便。

    private void codeitem_Load(object sender, EventArgs e)
            {
                dataBind();
            }
    
            private void dataBind()
            {
    
                //获取数据
                string sql = "select * from codeitem order by codeitem_paixu";
    
                DB db = new DB();
                string _msg = "";
                DataTable DT = db.GetDt(sql, out _msg);
                //
    
                treeView1.Nodes.Clear();
                nodeBind(treeView1, DT, "0", null);
                treeView1.ExpandAll();
                //
            }
    
            public void nodeBind(TreeView _treeView, DataTable _dt, string _filter, TreeNode _pNode)
            {
    
                //循环构建树
                string sFilter = "codeitem_pcode=’" + _filter + "’";
                TreeNode parentNode = _pNode;
    
                DataView dv = new DataView(_dt);
    
                dv.RowFilter = sFilter;
                if (dv.Count > 0)
                {
                    foreach (DataRowView drv in dv)
                    {
                        TreeNode tempNode = new TreeNode();
    
                        tempNode.Text = drv["codeitem_name"].ToString();
                        tempNode.Name = drv["ID"].ToString();
    
    
                        if (parentNode != null)
                            parentNode.Nodes.Add(tempNode);
                        else
                            _treeView.Nodes.Add(tempNode);
    
                        nodeBind(_treeView, _dt, drv["codeitem_code"].ToString(), tempNode);
                    }
                }
            }
    

      bubuko.com版权所有,禁止转载。原地址:【winform,TreeView树,树形菜单,bubufx】

  • 相关阅读:
    自己重写HTMLEditorExtender控件
    Sys.InvalidOperationException: A control is already associated with the element 错误处理方法
    navigationbar tabbar 状态栏的 高度
    iOS之正则表达式(转载)
    Mesonry的使用方法
    SimulatorXcode模拟器如何使用PC键盘进行输入
    Masonry第三方代码约束
    卸载openfire
    安装和使用cocoapods
    js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)
  • 原文地址:https://www.cnblogs.com/weekzero/p/3483178.html
Copyright © 2011-2022 走看看