شرح الشجرة Treeview

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

الفكرة العامة فى نظام ال Treeview  هو فكرة شجرة العائلة بالظبط ,فجدك هو اب لابيك وابوك هو ابن لجدك واب لك ,وابوك وعمك ابناء لجدك وابناء عمك على نفس المستوى مثلك ولكن لابيهم .

كما بالشكل:

Treeview conceptالشجرة

اذا كل ما علينا هو الآتى ,فى قاعدة البيانات يجب ان يكون هناك عنصر ما اب مثلا primary Key او  Parent field للمجموعات تحته Foriegn key او child 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());
}

حول أحمد حسان
Senior IT Specialist @ German Hospital of Alexandria ,Co-Developed Medxpress ,Hospital ERP system ,Microsoft Certified Solution Developer

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: