شرح الشجرة Treeview
السلام عليكم ورحمة الله وبركاته ,سأشرح هنا كيفية عرض بيانات فى اداة TreeView من قاعدة البيانات فى برمجة الويندوز ,يمكنك ان تحصل على المعلومات باستفاضة وبعدة طرق مختلفة للحل اذا بحثت فى جوجل عن “populating Treeview from database” او “filling Treeview from database” ,عموما سأشرح الفكرة العامة ومثال بسيط .
الفكرة العامة فى نظام ال Treeview هو فكرة شجرة العائلة بالظبط ,فجدك هو اب لابيك وابوك هو ابن لجدك واب لك ,وابوك وعمك ابناء لجدك وابناء عمك على نفس المستوى مثلك ولكن لابيهم .
كما بالشكل:

اذا كل ما علينا هو الآتى ,فى قاعدة البيانات يجب ان يكون هناك عنصر ما اب مثلا primary Key او field Parent للمجموعات تحته Foriegn key او chiled Field ,مثال على ذلك العلاقة بين جدول انواع البضاعة والبضاعة فى قاعدة بيانات Northwind بين جدولى Categories و Products ,فتحت كل صنف Category هناك منتج Product ,
سأقوم باللآتى :
سأقوم بعمل جملة استعلام Query لاحضر كل الاصناف ,اسمائها وارقام مفاتيحها من جدول الاصناف ,ثم سأحضر اسماء المنتجات ومفاتيح اصنافها ,واضع هذين الاستعلامين فى داتاست واقوم بعمل علاقة Relation بينهم بين عمود CategoryID فى جدول الاصناف ونفس العمود فى جدول المنتجات .
بعد ذلك ساقوم باضافة كل صنف على انه Parent Node فى ال TreeView ثم اقوم بعمل Loop على كل ابن لكل صنف واضيفه ك Child node واليكم الكود:
SqlConnection con=new SqlConnection("server=.;database=northwind;integrated security=true;");</pre>
SqlDataAdapter dap;
DataSet ds = new DataSet();
dap = new SqlDataAdapter("SELECT dbo.Categories.CategoryName,dbo.Categories.CategoryID FROM dbo.Categories",con);
dap.Fill(ds, "Categories");
dap = new SqlDataAdapter("SELECT dbo.Products.ProductName,dbo.Products.CategoryID FROM dbo.Products", con);
dap.Fill(ds, "products");
DataRelation dr = new DataRelation("procat", ds.Tables["Categories"].Columns["CategoryID"], ds.Tables["products"].Columns["CategoryID"]);
ds.Relations.Add(dr);
foreach (DataRow prow in ds.Tables["categories"].Rows)
{
TreeNode tn = new TreeNode(prow[0].ToString());
treeView1.Nodes.Add(tn);
foreach (DataRow crow in prow.GetChildRows(dr))
{
tn.Nodes.Add(crow[0].ToString());
}




