用TreeView构建树型目录(C#版)
2008-05-01 03:25
316 查看
引言:
参与了一个大型社区程序的开发,现在将相关开发经验陆续总结出来,和大家探讨一下。本节内容主要主要讨论的是用TreeView生成无限级分类的树型目录的问题,相关代码摘录自社区程序中的一个文章发布管理系统中的目录管理部分。
一、数据库设计
BBS_BestArticleFolder 精华区目录表
Key: FolderID
Field name
Type
Length
Default
Description
FolderID
int
4
ID(自动编号)
ParentFolderID
int
4
0
父目录ID
FolderName
Nvarchar
80
目录名
BoardID
int
4
0
版块ID
CreaterUserID
int
4
0
创建者ID
AddTime
DateTime
8
GetDate()
创建时间
二、树型目录构建过程
1、安装TreeView控件,我想大多数人都是会安装的,不会安装的去找相关文章一下下。
2、具体实现:
a 数据生成
#region 树的数据生成事件
private DataView CreateDateView(int boardID)
{
BBSBestArticleFolderCollection bafc=new BBSBestArticleFolderCollection();
bafc.GetInfoByParentFolderID(boardID,-1);
int bafcCount=bafc.Count;
DataTable dt = new DataTable("table");
dt.Columns.Add("FolderID",System.Type.GetType("System.String"));
dt.Columns.Add("FolderName",System.Type.GetType("System.String"));
dt.Columns.Add("ParentFolderID",System.Type.GetType("System.String"));
for(int i=0;i<bafcCount;i++)
{
DataRow dr=dt.NewRow();
dr[0]=bafc[i].ID;
dr[1]=bafc[i].FolderName;
dr[2]=bafc[i].ParentFolderID;
dt.Rows.Add(dr);
}
dv=dt.DefaultView;
return dv;
}
#endregion
一点说明:BBSBestArticleFolderCollection对象是个集合类,里面存储了所有符合条件的数据集合,GetInfoByParentFolderID是其中的一个方法,根据一定条件填充集合类的,此文主要讲TreeView构建树型目录,此处会在另外的文章中详述。
b
#region TreeView节点生成方法
private void CreateTree(TreeNodeCollection folderTreeNodeCollection ,int parentID)
{
dv.RowFilter= "ParentFolderID="+parentID;
int tmpParentFolderID=0;
foreach(DataRowView drv in dv)
{
TreeNode tn=new TreeNode();
tn.ID=drv.Row["FolderID"].ToString();
tn.Text=drv.Row["FolderName"].ToString().Trim();
tmpParentFolderID=Int32.Parse(drv.Row["ParentFolderID"].ToString().Trim());
//tn.CheckBox=true;
folderTreeNodeCollection.Add(tn);
CreateTree(folderTreeNodeCollection[folderTreeNodeCollection.Count - 1].Nodes,Int32.Parse(tn.ID));
}
}
一点解释:递归构建树的各级节点,其中的dv就是上一个方法生成的DataView
c 取得数据的方法有了,生节节点的方法也有了,那么剩下的就是调用了
CreateTree(TreeView1.Nodes,0);
一点解释:TreeView1是控件ID,这个大家都知道吧,这里的0其实就是表示顶级目录,从顶级目录递归调用
参与了一个大型社区程序的开发,现在将相关开发经验陆续总结出来,和大家探讨一下。本节内容主要主要讨论的是用TreeView生成无限级分类的树型目录的问题,相关代码摘录自社区程序中的一个文章发布管理系统中的目录管理部分。
一、数据库设计
BBS_BestArticleFolder 精华区目录表
Key: FolderID
Field name
Type
Length
Default
Description
FolderID
int
4
ID(自动编号)
ParentFolderID
int
4
0
父目录ID
FolderName
Nvarchar
80
目录名
BoardID
int
4
0
版块ID
CreaterUserID
int
4
0
创建者ID
AddTime
DateTime
8
GetDate()
创建时间
二、树型目录构建过程
1、安装TreeView控件,我想大多数人都是会安装的,不会安装的去找相关文章一下下。
2、具体实现:
a 数据生成
#region 树的数据生成事件
private DataView CreateDateView(int boardID)
{
BBSBestArticleFolderCollection bafc=new BBSBestArticleFolderCollection();
bafc.GetInfoByParentFolderID(boardID,-1);
int bafcCount=bafc.Count;
DataTable dt = new DataTable("table");
dt.Columns.Add("FolderID",System.Type.GetType("System.String"));
dt.Columns.Add("FolderName",System.Type.GetType("System.String"));
dt.Columns.Add("ParentFolderID",System.Type.GetType("System.String"));
for(int i=0;i<bafcCount;i++)
{
DataRow dr=dt.NewRow();
dr[0]=bafc[i].ID;
dr[1]=bafc[i].FolderName;
dr[2]=bafc[i].ParentFolderID;
dt.Rows.Add(dr);
}
dv=dt.DefaultView;
return dv;
}
#endregion
一点说明:BBSBestArticleFolderCollection对象是个集合类,里面存储了所有符合条件的数据集合,GetInfoByParentFolderID是其中的一个方法,根据一定条件填充集合类的,此文主要讲TreeView构建树型目录,此处会在另外的文章中详述。
b
#region TreeView节点生成方法
private void CreateTree(TreeNodeCollection folderTreeNodeCollection ,int parentID)
{
dv.RowFilter= "ParentFolderID="+parentID;
int tmpParentFolderID=0;
foreach(DataRowView drv in dv)
{
TreeNode tn=new TreeNode();
tn.ID=drv.Row["FolderID"].ToString();
tn.Text=drv.Row["FolderName"].ToString().Trim();
tmpParentFolderID=Int32.Parse(drv.Row["ParentFolderID"].ToString().Trim());
//tn.CheckBox=true;
folderTreeNodeCollection.Add(tn);
CreateTree(folderTreeNodeCollection[folderTreeNodeCollection.Count - 1].Nodes,Int32.Parse(tn.ID));
}
}
一点解释:递归构建树的各级节点,其中的dv就是上一个方法生成的DataView
c 取得数据的方法有了,生节节点的方法也有了,那么剩下的就是调用了
CreateTree(TreeView1.Nodes,0);
一点解释:TreeView1是控件ID,这个大家都知道吧,这里的0其实就是表示顶级目录,从顶级目录递归调用
相关文章推荐
- 用TreeView构建树型目录(C#版)
- 用TreeView构建树型目录
- asp.net2008(C#)的TreeView1添加树型目录节点
- 分享 C#不用treeview控件生成漂亮的树型结构
- C# TreeView无限目录树实现方法
- 一种从数据库利用xml创建树型目录的方法(C#)(一)
- C# TreeView递归显示整个系统盘符文件目录及文件
- C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考
- c# 获取收藏夹目录到树型控件
- 递归方法填充树型目录(treeview)
- C#不用treeview控件生成漂亮的树型结构
- TreeView(C#)无限目录树代码片段
- C# 系统应用之TreeView控件显示树状磁盘文件目录及加载图标
- C#读取目录加载到TreeView
- TreeView(C#)无限目录树代码片段
- Asp.Net Web Form c#TreeView遍历文件目录
- C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标
- C#使用线程加载指定目录下的所有子目录和文件名称到TreeView中
- C#界面设计之树目录TreeView的使用
- C# 中Treeview无限级目录实现