一、静态
private void BindTreeView2()
{
TreeViewItem item1 = new TreeViewItem() { Header = "中国" };
TreeViewItem item11 = new TreeViewItem() { Header = "山东省" };
item11.Items.Add("济南市");
item11.Items.Add("青岛市");
item11.Items.Add("淄博市");
item11.Items.Add("德州市");
private void BindTreeView2()
{
TreeViewItem item1 = new TreeViewItem() { Header = "中国" };
TreeViewItem item11 = new TreeViewItem() { Header = "山东省" };
item11.Items.Add("济南市");
item11.Items.Add("青岛市");
item11.Items.Add("淄博市");
item11.Items.Add("德州市");
item1.Items.Add(item11);
item1.Items.Add("北京市");
item1.Items.Add("天津市");
item1.Items.Add("天津市");
TreeViewItem item2 = new TreeViewItem() { Header = "美国" };
item2.Items.Add("加利福尼亚");
item2.Items.Add("内华达");
item2.Items.Add("佛罗里达");
item2.Items.Add("德克萨斯");
treeView1.Items.Add(item1);
treeView1.Items.Add(item2);
}
item2.Items.Add("加利福尼亚");
item2.Items.Add("内华达");
item2.Items.Add("佛罗里达");
item2.Items.Add("德克萨斯");
treeView1.Items.Add(item1);
treeView1.Items.Add(item2);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BindTreeView2();
}
{
BindTreeView2();
}
private void treeView1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
string dd = treeView1.SelectedItem as string;
MessageBox.Show(dd);
}
二、数据库绑定
1、后台代码:
//外网数据源******************
SqlConnection WwoleConnection = new SqlConnection("Server=服务器IP Catalog=数据库名 ; User ID=用户名; Password=密码;");
SqlCommand WwoleCommand = new SqlCommand();
//****************************
{
string dd = treeView1.SelectedItem as string;
MessageBox.Show(dd);
}
二、数据库绑定
1、后台代码:
//外网数据源******************
SqlConnection WwoleConnection = new SqlConnection("Server=服务器IP Catalog=数据库名 ; User ID=用户名; Password=密码;");
SqlCommand WwoleCommand = new SqlCommand();
//****************************
/// <summary>
/// 节点类
/// </summary>
internal class PropertyNodeItem
{
public string Icon { get; set; }
public string EditIcon { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
public int id { get; set; }
public int parentId { get; set; }
public bool IsExpanded { get; set; }
public List<PropertyNodeItem> Children { get; set; }
public PropertyNodeItem()
{
Children = new List<PropertyNodeItem>();
}
}
/// 节点类
/// </summary>
internal class PropertyNodeItem
{
public string Icon { get; set; }
public string EditIcon { get; set; }
public string DisplayName { get; set; }
public string Name { get; set; }
public int id { get; set; }
public int parentId { get; set; }
public bool IsExpanded { get; set; }
public List<PropertyNodeItem> Children { get; set; }
public PropertyNodeItem()
{
Children = new List<PropertyNodeItem>();
}
}
//无限接循环子节点添加到根节点下面
private void ForeachPropertyNode(PropertyNodeItem node, int pid)
{
DataTable Db = new DataTable();
//查询数据库********************
WwoleConnection.Open();
SqlCommand Wwcmd = new SqlCommand("", WwoleConnection);
string sql = "select * from TreeView";
Wwcmd.CommandText = sql;
if (null != Wwcmd.ExecuteScalar())
{
SqlDataReader dr;
dr = Wwcmd.ExecuteReader();
Db.Load(dr);
}
//**********************************************************
WwoleConnection.Close();
WwoleConnection.Open();
SqlCommand Wwcmd = new SqlCommand("", WwoleConnection);
string sql = "select * from TreeView";
Wwcmd.CommandText = sql;
if (null != Wwcmd.ExecuteScalar())
{
SqlDataReader dr;
dr = Wwcmd.ExecuteReader();
Db.Load(dr);
}
//**********************************************************
WwoleConnection.Close();
DataTable dtDict = Db;
DataView dvDict = dtDict.DefaultView;
dvDict.RowFilter = "parent_id=" + pid;
if (dvDict.Count > 0)
{
foreach (DataRowView view in dvDict)
{
int id = Convert.ToInt32(view["id"].ToString());
string name = view["name"].ToString();
int parentId = Convert.ToInt32(view["parent_id"].ToString());
PropertyNodeItem childNodeItem = new PropertyNodeItem()
{
DisplayName = name,
Name = name,
id = id,
parentId = parentId,
IsExpanded = false
};
ForeachPropertyNode(childNodeItem, id);
node.Children.Add(childNodeItem);
}
}
{
foreach (DataRowView view in dvDict)
{
int id = Convert.ToInt32(view["id"].ToString());
string name = view["name"].ToString();
int parentId = Convert.ToInt32(view["parent_id"].ToString());
PropertyNodeItem childNodeItem = new PropertyNodeItem()
{
DisplayName = name,
Name = name,
id = id,
parentId = parentId,
IsExpanded = false
};
ForeachPropertyNode(childNodeItem, id);
node.Children.Add(childNodeItem);
}
}
}
//根节点添加到treeVIew中
private void loadTree()
{
tvProperties.Items.Clear();//加载根节点前先清除Treeview控件项
List<PropertyNodeItem> itemList = new List<PropertyNodeItem>();
private void loadTree()
{
tvProperties.Items.Clear();//加载根节点前先清除Treeview控件项
List<PropertyNodeItem> itemList = new List<PropertyNodeItem>();
DataTable Db = new DataTable();
//查询数据库********************
WwoleConnection.Open();
SqlCommand Wwcmd = new SqlCommand("", WwoleConnection);
string sql = "select * from TreeView Where parent_id=0";
Wwcmd.CommandText = sql;
if (null != Wwcmd.ExecuteScalar())
{
SqlDataReader dr;
dr = Wwcmd.ExecuteReader();
Db.Load(dr);
}
//**********************************************************
WwoleConnection.Close();
WwoleConnection.Open();
SqlCommand Wwcmd = new SqlCommand("", WwoleConnection);
string sql = "select * from TreeView Where parent_id=0";
Wwcmd.CommandText = sql;
if (null != Wwcmd.ExecuteScalar())
{
SqlDataReader dr;
dr = Wwcmd.ExecuteReader();
Db.Load(dr);
}
//**********************************************************
WwoleConnection.Close();
DataTable dt = Db;
DataView dv = dt.DefaultView;
//dv.RowFilter = "parent_id=0";
for (int i = 0; i < dt.Rows.Count; i++)
{
PropertyNodeItem node = new PropertyNodeItem()
{
DisplayName = dv[i].Row["name"].ToString(),
Name = dv[i].Row["name"].ToString(),
id = Convert.ToInt32(dv[i].Row["id"].ToString()),
parentId = Convert.ToInt32(dv[i].Row["parent_id"].ToString()),
IsExpanded = true
};
int id = Convert.ToInt32(dv[i]["id"].ToString());
int pid = Convert.ToInt32(dv[i]["parent_id"].ToString());
ForeachPropertyNode(node, id);
itemList.Add(node);
}
int id = Convert.ToInt32(dv[i]["id"].ToString());
int pid = Convert.ToInt32(dv[i]["parent_id"].ToString());
ForeachPropertyNode(node, id);
itemList.Add(node);
}
this.tvProperties.ItemsSource = itemList;
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
loadTree();
}
{
loadTree();
}
private void tvProperties_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
PropertyNodeItem item = this.tvProperties.SelectedItem as PropertyNodeItem;
string nodeText = item.Name;
MessageBox.Show(nodeText);
{
PropertyNodeItem item = this.tvProperties.SelectedItem as PropertyNodeItem;
string nodeText = item.Name;
MessageBox.Show(nodeText);
}
2、前台界面代码:
<TreeView Height="264" x:Name="tvProperties" Width="220" SelectedItemChanged="tvProperties_SelectedItemChanged">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"></Setter>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
2、前台界面代码:
<TreeView Height="264" x:Name="tvProperties" Width="220" SelectedItemChanged="tvProperties_SelectedItemChanged">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"></Setter>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal">
<Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image>
<TextBlock VerticalAlignment="Center" Name="nodeName" Text="{Binding DisplayName}"></TextBlock>
<Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image>
<StackPanel.ToolTip>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
</StackPanel.ToolTip>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
3、数据库表结构及效果图
</TreeView>
3、数据库表结构及效果图