C#数据库递归构造treeview树形结构
2008-07-08 16:44
183 查看
1、首先数据库: f_id 项目ID号 ,f_front 父ID号 ,f_name名称,f_type类型,f_layer所处层,f_order 同层的顺序号;(f_layer,f_order不要也可,这里我主要是需要同层排序才用到)
2、然后“select f_id,f_front,f_name,f_type from data”取得DataSet数据集dsFrame;treeview 名称设为tvDept
3、写函数 构建treeveiw树形:
public void AddTree(int ParentID, TreeNode pNode)
{
DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
string Fstr = "[f_front] = " + ParentID;
dvTree.RowFilter = Fstr;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null) //处理主节点
{
Node.Name = Row["f_id"].ToString(); //这里+了2个值分别到Name和Text,可随便
Node.Text = Row["f_name"].ToString();
if (Row["f_type"].ToString() == "岗位") //这个不要也可以,主要为了不同类型显示不同图标
{
Node.ImageIndex = 1;
Node.SelectedImageIndex=1;
}
else
{
Node.ImageIndex = 0;
Node.SelectedImageIndex=0;
}
tvDept.Nodes.Add(Node); //加入
AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //递归
}
else //处理子节点
{
Node.Name = Row["f_id"].ToString();
Node.Text = Row["f_name"].ToString();
if (Row["f_type"].ToString() == "岗位")
{
Node.ImageIndex = 1;
Node.SelectedImageIndex = 1;
}
else
{
Node.ImageIndex = 0;
Node.SelectedImageIndex=0;
}
pNode.Nodes.Add(Node);
AddTree(Int32.Parse(Row["f_id"].ToString()), Node);
}
}
}
4、调用方法
AddTree(0, (TreeNode)null); //0就是处于最高级其f_front=0,数据库里1为顶层那就是1,这个随便
最好+一句 tvDept.ExpandAll(); 展开所有项。
2、然后“select f_id,f_front,f_name,f_type from data”取得DataSet数据集dsFrame;treeview 名称设为tvDept
3、写函数 构建treeveiw树形:
public void AddTree(int ParentID, TreeNode pNode)
{
DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
string Fstr = "[f_front] = " + ParentID;
dvTree.RowFilter = Fstr;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null) //处理主节点
{
Node.Name = Row["f_id"].ToString(); //这里+了2个值分别到Name和Text,可随便
Node.Text = Row["f_name"].ToString();
if (Row["f_type"].ToString() == "岗位") //这个不要也可以,主要为了不同类型显示不同图标
{
Node.ImageIndex = 1;
Node.SelectedImageIndex=1;
}
else
{
Node.ImageIndex = 0;
Node.SelectedImageIndex=0;
}
tvDept.Nodes.Add(Node); //加入
AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //递归
}
else //处理子节点
{
Node.Name = Row["f_id"].ToString();
Node.Text = Row["f_name"].ToString();
if (Row["f_type"].ToString() == "岗位")
{
Node.ImageIndex = 1;
Node.SelectedImageIndex = 1;
}
else
{
Node.ImageIndex = 0;
Node.SelectedImageIndex=0;
}
pNode.Nodes.Add(Node);
AddTree(Int32.Parse(Row["f_id"].ToString()), Node);
}
}
}
4、调用方法
AddTree(0, (TreeNode)null); //0就是处于最高级其f_front=0,数据库里1为顶层那就是1,这个随便
最好+一句 tvDept.ExpandAll(); 展开所有项。
相关文章推荐
- C#数据库递归构造TreeView树形结构
- 递归构造treeview树形结构
- 递归构造AD组织结构(Organizational Unit)的树形结构
- 树形结构_数据库_利用递归遍历一棵只知道父节点的树
- C#数据库递归构造treeview树形结构
- TreeView树形控件递归绑定数据库里的数据
- 树形结构的数据库表Schema设计
- java、js中实现无限层级的树形结构方法(类似递归)
- 使用递归算法结合数据库解析成java树形结构
- Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
- [转载自51cto]C#treeview递归操作数据库浅析
- TreeView绑定数据库 (非递归)
- 使用递归算法结合数据库解析成java树形结构
- 采用左右值编码来存储无限分级树形结构的数据库表设计收藏
- 使用递归算法结合数据库解析成java树形结构
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 树形结构的数据库表Schema设计
- ASP.net MVC、Extjs多级目录(理论上可以无限级、非递归)treepanel显示和数据库(多级目录)存储结构的设计(上篇)
- 树形控件TreeView与数据库绑定
- IE Web Control介绍以及TreeView 控件树形结构不能显示的问题