PDA

View Full Version : چگونه با روش کد فرست یک treeview را به صورت بازگشتی در یک پروژه ویندوز فرم پر کنم؟



mohasanati
چهارشنبه 20 آبان 1394, 02:03 صبح
با سلام
من در جدول دیتا بیس خود یک id, name, parentId دارم که می خواهم این ها را به صورت درختی در فرم ویندوز نمایش دهم. نحوه اتصال ... از entity framework می باشد.

136633
136634

نمونه کد اتصال و خواندن اطلاعات از دیتابیس:

136635
دقت کنید می خواهم نود های فرزند از هر ریشه یا (root) به صورت بازگشتی ساخته شوند!!! و حتما هم در قالب ویندوز فرم باشد.
با تشکر از شما دوست عزیز.

Mahmoud.Afrad
پنج شنبه 21 آبان 1394, 09:11 صبح
اگر کلاس رو self reference بنویسی به صورت زیر

public class Vendor
{
public int Id { get; set; }
public string Name { get; set; }
public Vendor Parent { get; set; }
}

به صورت زیر میتونی پر کنی:

private void AddNodes(List<Vendor> sourceVendors, Vendor parent, TreeNodeCollection tnCollection)
{
var childs =
from v in sourceVendors
where v.Parent == parent
select v;
foreach (Vendor child in childs)
{
TreeNode tn = tnCollection.Add(child.Id.ToString(), child.Name);
AddNodes(sourceVendors, child, tn.Nodes);
}
}

به صورت زیر هم فراخوانی کنید:

List<Vendor> allVendors = db.Vendors.ToList();
AddNodes(allVendors , null , treeView1.Nodes);