C# TreeView 中遞歸生成樹(二)


有時候的樹結構更復雜,層數多,可能不止在一個表中查詢。如一個項目中的樹結構:

層數不固定,最后的樹葉層時從不同的表中查詢得到。

 

先利用了上一篇中生成樹的方法:表中的結構和上篇中的機構基本相同。

 

private void CreateTree(TreeNode PNode, int traceCode)
        {
            string strSql = "select treecode,treename from TraceTree where ptreecode = " + traceCode;
            DataTable dt = SqlClass.GetTable(strSql);
            if (traceCode == -1)
            {
                PNode.Text = dt.Rows[0]["treename"].ToString();
                PNode.Tag = "R" + dt.Rows[0]["treecode"].ToString();
                tvwTest.Nodes.Add(PNode);
                CreateTree(PNode, Convert.ToInt32(dt.Rows[0]["treecode"].ToString()));
            }
            else
            {
                if (dt.Rows.Count != 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        TreeNode node = new TreeNode();
                        node.Text = dt.Rows[i]["treename"].ToString();
                        node.Tag = "P" + dt.Rows[i]["treecode"].ToString();
                        ///////////////AddPro(node, Convert.ToInt32(dt.Rows[i]["treecode"].ToString())); // 注釋添加葉子函數
                        CreateTree(node, Convert.ToInt32(dt.Rows[i]["treecode"].ToString()));
                        PNode.Nodes.Add(node);
                    }
                }
            }

        }

  生成樹:

 和要求得到的樹機構差不多了,只是差葉子節點。

添加了 private void AddPro(TreeNode node, int treeCode) // 加載樹葉  函數,在添加除了根節點以外的其它節點前,添加這個節點對應的葉子。如上注釋代碼。

 

 


免責聲明!

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



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