treeview和数据库

chester1 2006-06-13 10:36:27
现在有一个表,结构如下:
trid trname trparentid
1 中国 0
2 韩国 0
3 北京 1
4 汉城 2
5 重庆 1
6 釜山 2
怎样利用treeview控件将数据读入并实现
中国
北京
重庆
韩国
汉城
釜山
这样的结构
...全文
243 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiming0755 2006-06-17
  • 打赏
  • 举报
回复
要沉了
yiming0755 2006-06-14
  • 打赏
  • 举报
回复
下面是不加那个根的代码:更加灵活:
void PopulateTreeView(DataTable dt)
{
//dt为数据库中没有上级接点的接点集合,也就是第一级接点,(select * from table where parentID=null)
foreach(DataRow row in table.Rows)
{
TreeNode n=new TreeNode();
n.Text=row["nodeName"].Tostring();
n.ID=row[0]["node_id"].ToString();
this.TreeView1.Nodes.Add(n);
AddFolders(n.ID,n); //这个函数不变。
}
}
yiming0755 2006-06-14
  • 打赏
  • 举报
回复
首先我推荐你在数据库的第一行加一个根,那么先获取这个根,然后对他递归。
这样做你比较容易理解。如果没有这个根也是可以的,不过算法比这个复杂,不利于你理解。
void PopulateTreeView(DataTable dt) //dt为数据库全部数据
{
TreeView1.Nodes.Clear();
TreeNode n=new TreeNode();
n.Text=dt.Rows[0]["nodename"].ToString();
n.ID=dt.Rows[0]["node_id"].ToString();
//把第一个节 点,即根接点加到树中。
this.TreeView1.Nodes.Add(n);
AddFolders(n.ID,n);
}

/// <summary>
/// 添加子节点
/// </summary>
/// <param name="id"></param>
/// <param name="no"></param>
public void AddFolders(string id,TreeNode no)
{
//getchildNode()传入一个节点ID,获取它的下级节点
DataTable table=this.getchildNode(System.Convert.ToInt32(id));
foreach(DataRow row in table.Rows)
{
TreeNode n=new TreeNode();
n.Text=row["nodename"].ToString();
n.ID=row["node_id"].ToString();
no.Nodes.Add(n);
this.AddFolders(n.ID,n);
}
}
skyline81 2006-06-14
  • 打赏
  • 举报
回复
按照 rfq(任凤泉) 的写写看
LixingTie 2006-06-14
  • 打赏
  • 举报
回复
呵呵,也是!!
skyline81 2006-06-14
  • 打赏
  • 举报
回复
START WITH trname IN ( )
CONNECT BY PRIOR trid = trparentid
ORDER BY trid
ou108 2006-06-14
  • 打赏
  • 举报
回复
呵呵
LixingTie(生铁)
要是有三級四級五級呢

很定是要定義級別的
一級一級加
Knight94 2006-06-14
  • 打赏
  • 举报
回复
参看
http://blog.csdn.net/knight94/archive/2006/05/01/704281.aspx
LixingTie 2006-06-14
  • 打赏
  • 举报
回复
treeView.Nodes.Clear();

table = dataset.Tables["表名"];
foreach (DataRow oneRow in table.Rows)
{
string text = oneRow["trname"].ToString();
string ID = oneRow["trparentid"].ToString();
TreeNode node = new TreeNode(text);
node.Name = text;
if(ID=="0")
{
treeView.Nodes.Add(node);
}
else if(ID=="1")
{
treeView.Nodes["中国"].Nodes.Add(node);
}
else if(ID=="2")
{
treeView.Nodes["韩国"].Nodes.Add(node);
}
}
treeView.ExpandAll();

代码我没测试过,不过思路大概如此,你自己看着办
rfq 2006-06-14
  • 打赏
  • 举报
回复
没问题,
ArrayList a=distinct parent id
foreach(item in a)
{
生成节点(递归);
}
zhgroup 2006-06-14
  • 打赏
  • 举报
回复
表结构有问题
winner2050 2006-06-14
  • 打赏
  • 举报
回复
我晕
chester1 2006-06-14
  • 打赏
  • 举报
回复
求人不如求自己,算了,自己想办法解决
amandag 2006-06-13
  • 打赏
  • 举报
回复
up
chester1 2006-06-13
  • 打赏
  • 举报
回复
帮忙吧!大虾们
chester1 2006-06-13
  • 打赏
  • 举报
回复
自己顶一个先

110,536

社区成员

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

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

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