求各位大侠根据下面表结构用C#实现树形目录源码

fangji_999 2002-12-23 09:46:16
表结构如下.
uid parent Name Link codes
1 0 工程文件 http://myfile gcwj
2 0 工程图片 http://mypicture gctp
3 1 文件1.file http://myfile1 gcwj.1
4 1 文件2.file http://myfile2 gcwj.2
5 2 图片1.gif http://mypicture1 gctp.1
6 2 图片2.gif http://mypicture2 gctp.2
7 2 风景图片 http://mybepicture gctp.fj
8 7 风景图片1 http://mybepicture1 gctp.fj.1
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huan_jinwu 2002-12-23
  • 打赏
  • 举报
回复
图片2.gif多打了空格了!!!
huan_jinwu 2002-12-23
  • 打赏
  • 举报
回复
大体如下,要修改:
private Form1_load(object sender,system.EventArgs e)
{
DataSet mydataset=new DataSet("mydataset");
OleDbConnect myConn = new OleDbConnect(strconn);
OleDbCommand mycom=new OleDbCommand("Select * from table",myConn);
OleDbDataAdapter da;
da.SelectCommand = mycom;
da.Fill(mydataset,"工程");
TreeNode roottn = new TreeNode("工程 ",0,0);//根节点工程
tv.Nodes.Add(roottn);//tv为视树图
foreach(DataRow dr in mydataset.Tables["工程"].Rows)//因为同一表所以循还所有行
{
string filter = "codes='gcwj'";
DataRow[] drarr=mydataset.Tables["工程"].Select(filter);
foreach(DataRow drgcwj in drarr)
{
TreeNode tngc = new TreeNode(drgcwj["Name"],1,1);//1为图片索引,工程文件加入
roottn.Nodes.Add(tngc);
string filter1 = "codes='gcwj.1'";
DataRow[] drwjname = mydataset.Tables["工程"].Select(filter1);
foreach(DataRow drname in drwjname)
{
TreeNode tvname = new TreeNode(drname["Name"],2,2)
tngc.Node.Add(tvname);//工程文件名节点加入
}
}

filter = "codes='gctp'";//加入图节节点作准备
DataRow[] gctparr = mydataset.Tables["工程"].Select(filter);
foreach(DataRow drtp in gctparr)
{
TreeNode tntp=new TreeNode(drtp["name"],3,3)
roottn.Nodes.Add(tntp);//加入图片节点
string filtertp="codes='gctp.1'";
DataRow[] gctpname = mydataset.Tables["工程"].Select(filtertp);
forecah(DataRow drgctpname in gctpname)
{
TreeNode tngctpname = new TreeNode(drgctpanme["Name"],4,4);
tntp.NOdes.Add(tngctpname);
}
}
}
}//大体如此,不知是不是你想的树形,以上代码展开树形如下:
工程
|--工程文件
| |_文件1.file
|_文件2.file
|--工程图片
|_图片1.gif
|_图片2.gif
//想要别要的根或是子节点就用mydataset.Tables["工程"].select(条件)选出行,加入想加入的节点。以上代码没有测试过。
好象你codes字段用来区别的所属工程文件不是很好区别,要改一改。
至于要跳转到Link则要另写tv_AfterSelected事件。
xhan2000 2002-12-23
  • 打赏
  • 举报
回复
这个东西很简单

用递归一次全部查找出来
fangji_999 2002-12-23
  • 打赏
  • 举报
回复
我使用的是递归算法来实现,在我们对这个算法评测时发现,对于拥有成千上万条记录的数据库就不再能胜任了,希望大家在新的版本中,最好是使用XML技术,动态的发现数据,以解决一次从服务器下在大量数据的尴尬,同时也遍免了如果表数据结构呈现为图时就会进入死循环的错误。(不知各位大侠用过Project没有)我的目地.就是根据大纳代码..在网页上以树形目录形式展示出来

110,539

社区成员

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

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

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