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】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM