winform treeview绑定

yefeng85862375 2010-08-04 09:35:39
数据库表的结构
menu_id menu_name parentid
A 路段监控 0
A11 预案编辑 0
A11001 信息发布 0
A11002 交通控制 0
A11003 交通事件 0
A11004 统计报表 0
A11005 系统管理 0
A11006 用户管理 A11005
A11007 权限管理 A11005
A11008 日志查询 A11005
A11009 备份设置 A11005
A11010 手动备份 A11005
A11011 备份恢复 A11005

我想绑定到tree树控件该如何实现??
控件treeview
...全文
266 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yefenghebaobao 2010-08-05
  • 打赏
  • 举报
回复
接受我的
捷哥1999 2010-08-04
  • 打赏
  • 举报
回复
参考:
加载数据库的树形数据:
数据是存在数据库中的,结构如下:
id name end js
101 根 0 1
10101 1级 1 2
102 根 1 0 1
10201 1级1 0 2
1020101 2级 1 3
10202 1级1 1 2

如何通过代码加载到TREEVIEW中去?
Dim tb As DataTable
Dim treeview1 As TreeView
Private Sub fillTree()
For Each row As DataRow In tb.Rows
Dim trNode As New TreeNode
trNode.Text = row("Name")
trNode.Tag = row("id")
If row("end") = 0 Then
treeview1.Nodes.Add(trNode)
Else
For Each nod As TreeNode In treeview1.Nodes
addChildNode(trNode, nod)
Next
End If

Next
End Sub
'用一个递归过程添加子节点
Private Sub addChildNode(ByVal ChildNode As TreeNode, ByVal ParentNode As TreeNode)
If Left(ChildNode.Tag, Len(ChildNode.Tag) - 2) = ParentNode.Tag Then
ParentNode.Nodes.Add(ChildNode)
Else
For Each Nod As TreeNode In ParentNode.Nodes
addChildNode(ChildNode, Nod)
Next
End If
End Sub

guohelv0519 2010-08-04
  • 打赏
  • 举报
回复
上面写错了,调用 DataSet 对象的 WriteXml()方法,不是 ReadXml() 方法。
guohelv0519 2010-08-04
  • 打赏
  • 举报
回复
可以使用 DataSet 对象的 ReadXml()方法来读取数据库表以生成 xml 文件,从而以 xml 数据文件作为数据源来绑定 TreeView 控件。
-小蕾- 2010-08-04
  • 打赏
  • 举报
回复
/// <summary>
/// 创建DataSet的方法
/// </summary>
/// <param name="nodes">TreeView的根节点</param>
/// <param name="ds">Dataset数据集合</param>
/// <param name="pid">节点的父</param>
private void CreateTreeView(TreeNodeCollection nodes, DataSet ds, int pid)
{
//定义筛选条件
string sql = string.Format("ParentID={0}", pid);

//从Dataset中筛选符合条件的行的集合
DataRow[] drr = ds.Tables[0].Select(sql);

//遍历获得行的集合
foreach (DataRow dr in drr)
{
//创建TreeView节点
TreeNode tnode = new TreeNode();
//添加到根节点中
nodes.Add(tnode);
tnode.Text = dr["menu_name"].ToString();
tnode.Value = dr["menu_id"].ToString();
//递归调用方法
CreateTreeView(tnode.ChildNodes, ds, Convert.ToInt32(dr["menu_id"]));
//从Dataset中删除已经添加的行,提高访问效率
ds.Tables[0].Rows.Remove(dr);

}
}
bdmh 2010-08-04
  • 打赏
  • 举报
回复
只能手动根据节点层次添加
  • 打赏
  • 举报
回复
做个函数,递归调用,好像没法直接绑定
zhuazhuqingchong 2010-08-04
  • 打赏
  • 举报
回复
就是一个递归么,dt是读取到的数据表

public void InitTreeView()
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][“parentid”].ToString() == "")
{
treeView1.Nodes.Add(dt.Rows[i][“menu_name”].ToString());
treeView1.Nodes[treeView1.Nodes.Count - 1].Tag = dt.Rows[i]["menu_ID"].ToString();

}

} FillTreeView(treeView1.Nodes);

}

public void FillTreeView(TreeNodeCollection tnc)
{

foreach (TreeNode tn in tnc)
{
DataTable dtcopy = dt.Copy();
dtcopy.DefaultView.RowFilter = "ParentID='" + tn.Tag + "'";
DataTable dtf = dtcopy.DefaultView.ToTable();
for (int i = 0; i < dtf.Rows.Count; i++)
{
tn.Nodes.Add(dtf.Rows[i]["menu_name"].ToString());
tn.Nodes[tn.Nodes.Count - 1].Tag = dtf.Rows[i]["menu_ID"].ToString();
}
FillTreeView(tn.Nodes);
}
}
yefeng85862375 2010-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zyl_leilei 的回复:]
/// <summary>
/// 创建DataSet的方法
/// </summary>
/// <param name="nodes">TreeView的根节点</param>
/// <param name="ds">Dataset数据集合</param>
/// <param name="pid">节点的父</param>
private void Cr……
[/Quote]
。。。。我点不出value这个属性 怎么回事?
zouqiang122 2010-08-04
  • 打赏
  • 举报
回复
顶zyl_leilei,他写的方法是正常的
yefeng85862375 2010-08-04
  • 打赏
  • 举报
回复
........高手都午休去了么、

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧