PDA

View Full Version : کار با TreeView در WPF



farashah_jalal
جمعه 24 اردیبهشت 1389, 21:41 عصر
من میخواستم tree view اطلاعات نود ها و ریشه رو از data baseبخونه و در tree view نمایش بده.
روکورد های جدول من هم ID,SubJect,FatherID)می باشد.
می خواستم اگه امکان داره راهنماییم کنید.

رضا عربلو
سه شنبه 28 اردیبهشت 1389, 23:29 عصر
از HierarchicalDataTemplate استفاده کنید.
برای مثال:
http://www.dev102.blogspot.com/2007/12/how-to-use-hierarchical-datatemplate-in.html

farashah_jalal
چهارشنبه 29 اردیبهشت 1389, 12:31 عصر
از HierarchicalDataTemplate استفاده کنید.
برای مثال:
http://www.dev102.blogspot.com/2007/12/how-to-use-hierarchical-datatemplate-in.html
اگر اطلاعات به صورت درخت واره از 2 سطح بیشتربود این روش امکان پذیر نیست.
این اطلاعات داخل database می باشد.




MenuId Name ParentId
1 Country 0
2 India 1
3 USA 1
4 AP 2
5 UP 2
6 California 3
7 Newyork 3


و به عنوان مثال مانند این treeview نمایش داده شود.



+ COUNTRY
+ INDIA
AP
UP
+USA
Lusiana
Nwyrk

رضا عربلو
جمعه 31 اردیبهشت 1389, 03:19 صبح
دوست عزیز در اون لینکی که داده ام اگر دقت کنید تا 3 لایه درون treeview می توان آیتم ها را دید.
تنها نکته ای که بایستی مد نظر داشته باشید این است که ساختار self refrencing خود را به یک ساختار hierechical در بیاورید (یعنی هر آیتم پراپرتی به نام Children دارد که به کالکشن ایتم های فرزند اشاره می کند.)

farashah_jalal
یک شنبه 20 تیر 1389, 11:02 صبح
چگونگی کار با TreeView


privatevoid Window_Loaded(object sender, RoutedEventArgs e)
{
SqlConnection con = newSqlConnection();
SqlDataAdapter ad = newSqlDataAdapter();
con.ConnectionString = "Server=.;Database=Archive;integrated security=true";
SqlCommand cmd = newSqlCommand();
String str = "SELECT * FROM category ";
cmd.CommandText = str;
ad.SelectCommand = cmd;
cmd.Connection = con;
DataTable table = newDataTable();
ad.Fill(table);
DataRow[] RowNullFatherID = table.Select("fatherid =0");
foreach (DataRow DrNullFather in RowNullFatherID)
{
TreeViewItem item = newTreeViewItem();
item.Tag = DrNullFather["id"];
item.Header = DrNullFather["Subject"].ToString();
// item.Items.Add("*");
treeView1.Items.Add(item);
DataRow[] RowOFDt = table.Select("Fatherid=" + DrNullFather["ID"].ToString());
if (RowOFDt.Length > 0)
{
findchildnod(RowOFDt, table, item);
}
}
}
privatestaticvoid findchildnod(DataRow[] rowofdt, DataTable childdt, TreeViewItem tvi)
{
foreach (DataRow drchild in rowofdt)
{
TreeViewItem tnchild = newTreeViewItem();
tnchild.Tag = drchild["id"];
tnchild.Header = drchild["Subject"].ToString();
tvi.Items.Add(tnchild);
DataRow[] rowofchild = childdt.Select("fatherid=" + drchild["id"].ToString());
if (rowofchild.Length > 0)
{
findchildnod(rowofchild, childdt, tnchild);
}
}
}

farashah_jalal
یک شنبه 20 تیر 1389, 11:03 صبح
چگونگی کار با TreeView


privatevoid Window_Loaded(object sender, RoutedEventArgs e)
{
SqlConnection con = newSqlConnection();
SqlDataAdapter ad = newSqlDataAdapter();
con.ConnectionString = "Server=.;Database=Archive;integrated security=true";
SqlCommand cmd = newSqlCommand();
String str = "SELECT * FROM category ";
cmd.CommandText = str;
ad.SelectCommand = cmd;
cmd.Connection = con;
DataTable table = newDataTable();
ad.Fill(table);
DataRow[] RowNullFatherID = table.Select("fatherid =0");
foreach (DataRow DrNullFather in RowNullFatherID)
{
TreeViewItem item = newTreeViewItem();
item.Tag = DrNullFather["id"];
item.Header = DrNullFather["Subject"].ToString();
// item.Items.Add("*");
treeView1.Items.Add(item);
DataRow[] RowOFDt = table.Select("Fatherid=" + DrNullFather["ID"].ToString());
if (RowOFDt.Length > 0)
{
findchildnod(RowOFDt, table, item);
}
}
}
privatestaticvoid findchildnod(DataRow[] rowofdt, DataTable childdt, TreeViewItem tvi)
{
foreach (DataRow drchild in rowofdt)
{
TreeViewItem tnchild = newTreeViewItem();
tnchild.Tag = drchild["id"];
tnchild.Header = drchild["Subject"].ToString();
tvi.Items.Add(tnchild);
DataRow[] rowofchild = childdt.Select("fatherid=" + drchild["id"].ToString());
if (rowofchild.Length > 0)
{
findchildnod(rowofchild, childdt, tnchild);
}
}
}