数据库数据如下
parID ID name
0 1000 中国
1000 10001000 北京
1000 10002000 上海
1000 10003000 四川
10001000 100010001001 海淀
10001000 100010001002 通州
10002000 100020001001 宝山
10003000 100030001001 成都
10003000 100030001002 达州
100030001002 1000300010011001 双流
100030001002 1000300010011002 温江现在根据条件查询出4条数据,分别是“通州”“四川”“成都”“温江”
,要把这四条数据展现在treeview上,现在给出他们的root是“中国”,
最后形式为:
“中国”
|——————通州
|——四川
|———成都
|———温江注意:取出的“通州”父节点应该是“北京”,因为“北京”不在取出的数据中,往上类推,“北京”的父节点是“中国”,所以最后“通州”的父节点是“中国”,跟“四川”一样都是“中国”的子节点。
parID ID name
0 1000 中国
1000 10001000 北京
1000 10002000 上海
1000 10003000 四川
10001000 100010001001 海淀
10001000 100010001002 通州
10002000 100020001001 宝山
10003000 100030001001 成都
10003000 100030001002 达州
100030001002 1000300010011001 双流
100030001002 1000300010011002 温江现在根据条件查询出4条数据,分别是“通州”“四川”“成都”“温江”
,要把这四条数据展现在treeview上,现在给出他们的root是“中国”,
最后形式为:
“中国”
|——————通州
|——四川
|———成都
|———温江注意:取出的“通州”父节点应该是“北京”,因为“北京”不在取出的数据中,往上类推,“北京”的父节点是“中国”,所以最后“通州”的父节点是“中国”,跟“四川”一样都是“中国”的子节点。
else func(--a);
{
public MenuName{get;set} //结点名称
putlic parentID{get;set;} //结点parentid
}
/// <summary>
/// 首先添加一个根结点
/// </summary>
public void AddRootNode()
{
TreeViewItem item = new TreeViewItem();
item.Header = "中国";
item.IsSelected = true;
item.IsExpanded = true; TV_TreeView.Items.Add(item);
//添加子节点
AddTreeViewNode( 1000, TV_TreeView.SelectedItem as TreeViewItem);
}
/// <summary>
/// 添加treeview结点
/// </summary>
/// <param name="parentID"></param>
/// <param name="item"></param>
private void AddTreeViewNode(int parentID, TreeViewItem item)
{
try
{
//MenuInfo是实体类、存储所有结点数据--menulist是MenuInfo对象的集合
List<MenuInfo> list = (from lst in menuList
where lst.ParentID == parentID
select lst).ToList();
if (list.Count > 0)
{
foreach (MenuInfo menuInfo in list)
{
TreeViewItem treeViewItem = new TreeViewItem(); treeViewItem.Header = menuInfo.MenuName;
treeViewItem.DataContext = menuInfo;
item.Items.Add(treeViewItem);
AddTreeViewNode(menuInfo.AutoID, treeViewItem);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "系统错误", MessageBoxButton.OK);
}
}
实体类少了一个属性:AutoID也就是楼主的ID字段
public class MenuInfo
{
public MenuName{get;set} //结点名称
putlic parentID{get;set;} //结点parentid
putlic AutoID{get;set;} //结点id
}
{
string sql = "select * from doctype where isdel=0";
DataTable dt = db.ExecuteDataTable(sql, CommandType.Text, null);
DataRow[] dr=dt.Select("updirid='-1'");
for (int i = 0; i < dr.Length; i++)
{
TreeNode tn = new TreeNode();
tn.Text = dr[i]["docdirname"].ToString();
tn.Tag=dr[i]["docdirid"].ToString();
if (dr[i]["isdir"].ToString() == "1")
{
tn.ImageIndex = 0;
FillTree(tn, dt);
}
else
{
tn.ImageIndex = 1;
}
treeView1.Nodes.Add(tn);
}
} private void FillTree(TreeNode node, DataTable dt)
{
DataRow[] dd = dt.Select("updirid='"+node.Tag.ToString()+"'");
if (dd.Length > 0)
{
for (int i = 0; i < dd.Length; i++)
{
TreeNode tnn = new TreeNode();
tnn.Text = dd[i]["docdirname"].ToString();
tnn.Tag = dd[i]["docdirid"].ToString();
if (dd[i]["isdir"].ToString() == "1")
{
tnn.ImageIndex = 0;
FillTree(tnn, dt);
}
else
{
tnn.ImageIndex = 1;
}
node.Nodes.Add(tnn);
}
}
}
http://blog.csdn.net/xianfajushi/article/details/7550084
/// <summary>
/// 绑定TreeView控键
/// </summary>
/// <param name="project"></param>
/// <param name="parentId"></param>
void BuildTreeView(BillsOfQuantities.ProjectDataTable project, int parentId)
{
foreach (BillsOfQuantities.ProjectRow area in project.Select(string.Format("parentId = {0}", parentId)))
{
TreeNode node = new TreeNode(); //根节点
node.Text = area.Name;
node.Tag = area;
this.treeName.Nodes.Add(node);
selectChild(node, project, area.ProjectId); }
TreeNode tn = treeName.Nodes[0];
this.treeName.SelectedNode = tn;
}
/// <summary>
/// 递归查询子节点
/// </summary>
public void selectChild(TreeNode tnn, BillsOfQuantities.ProjectDataTable project, int parentId)
{
foreach (BillsOfQuantities.ProjectRow it in project.Select(string.Format("parentId = {0}", parentId)))
{
TreeNode tn = new TreeNode();
tn.Text = it.Name;
tn.Tag = it;
tnn.Nodes.Add(tn);
selectChild(tn, project, it.ProjectId);
} }
以前写的 我把数据弄的数据集里面来操作的BuildTreeView(BillsOfQuantities.ProjectDataTable project, int parentId);调用这个方法parentId参数传0就行了