شرح الشجرة TreeView

السلام عليكم ورحمة الله وبركاته
كنت قد شرحت سابقا حلا مبسطا للشجرة على هذا الرابط
والآن اشرح لكم حلا معقدا للشجرة عن طريق الالتفاف Recursion  ويمكنك ان تقرأ فى الموضوع بالبحث عن How to populate treeview recursive
اولا كيف احصل على البيانات من قاعدة البيانات
الشكل كما بالصورةTreeView

 

الآن فى ال Form Load او فى زرار ملىء الشجرة اكتب الكود التالى
حيث هذا الكود يقوم بملىء الآباء الرئيسيين ثم اقوم بعمل Recursion التفاف على كل ابن اضيفه لاضيف آبناؤه


  foreach (DataRow  item in MtDatetable.Rows)
            {
                TreeNode node= new TreeNode();
                if (item["ParentID"].ToString() == "0")
                {

                  node.Text  = item["AccountName"].ToString();
                  node.Tag = item["AccountID"].ToString();
                  treeView1.Nodes.Add(node);
                  FillTree(node);
                }

            }

ثم اقوم بإنشاء void لملىء الشجرة

     private void FillTree( TreeNode item)
        {     

             
                    if (item.Tag != null)
                    {
                        DataView dv = dt.AsDataView();
                        dv.RowFilter = "ParentID=" + item.Tag;
                        for (int i = 0; i < dv.Count; i++)
                        {
                            TreeNode tr = new TreeNode();
                            tr.Text = dv[i]["AccountName"].ToString();
                            tr.Tag = dv[i]["AccountID"].ToString();
                            item.Nodes.Add(tr);
                            FillTree(tr);
                        }
                    }

                
            
        }