建树的基本思路:从根节点开始递归调用显示子树
来源:互联网 发布:安卓软件评测 编辑:程序博客网 时间:2024/05/14 10:32
数据库如下:
NodeId ParentId NodeName Address Icon 100000 0 公共查询部 icon_document.gif 100001 100000 人民币日报查询 public/a1.aspx icon_settings.gif 100002 100000 外币日报查询 public/a2.aspx icon_settings.gif 100003 0 分行科技部 tech/a1.aspx icon_document.gif 100004 100003 人民币日报查询 tech/a2.aspx icon_settings.gif 100005 100003 外币日报查询 100006 0 福田支行 icon_document.gif 100007 100006 月存款进度表 a1.aspx icon_settings.gif 100008 100006 月存款走势图 a2.aspx icon_settings.gif 100009 0 罗湖支行 icon_document.gif 100010 100009 月存款进度表 a1.aspx icon_settings.gif 100011 100009 月存款走势图 a2.aspx icon_settings.gifpublic class menu_Left : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView tvMenu;
SqlConnection Conn;
SqlDataAdapter myCmd;
DataSet ds;
string cmdSelect;
private void Page_Load(object sender, System.EventArgs e)
{
Conn=new SqlConnection(Application["ConnString"].ToString());
CreateDataSet();
InitTree(tvMenu.Nodes,"0");
}
//建立数据集
private DataSet CreateDataSet()
{
cmdSelect="select * from S_Menu";
myCmd=new SqlDataAdapter(cmdSelect,Conn);
ds=new DataSet();
myCmd.Fill(ds,"tree");
return ds;
}
//建树的基本思路是:从根节点开始递归调用显示子树
private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentId='" + parentId + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["NodeId"].ToString();
tmpNd.Text=drv["NodeName"].ToString();
tmpNd.ImageUrl="../images/"+drv["Icon"].ToString();
tmpNd.NavigateUrl="../"+drv["Address"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}
{
Conn=new SqlConnection(Application["ConnString"].ToString());
CreateDataSet();
InitTree(tvMenu.Nodes,"0");
}
//建立数据集
private DataSet CreateDataSet()
{
cmdSelect="select * from S_Menu";
myCmd=new SqlDataAdapter(cmdSelect,Conn);
ds=new DataSet();
myCmd.Fill(ds,"tree");
return ds;
}
//建树的基本思路是:从根节点开始递归调用显示子树
private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentId='" + parentId + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["NodeId"].ToString();
tmpNd.Text=drv["NodeName"].ToString();
tmpNd.ImageUrl="../images/"+drv["Icon"].ToString();
tmpNd.NavigateUrl="../"+drv["Address"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}
- 建树的基本思路:从根节点开始递归调用显示子树
- 二叉树的最大路径和 II--要求开始于根节点--则 先加上根节点,再递归左右子树。
- 给定一个树的节点ID,递归遍历出以这个节点为根的子树,以JSON格式返回
- //递归建树,bfs,dfs的关键是引入处理根节点,空树条件(结束条件),遍历子节点作为根节点
- 二叉树中所有节点的左右子树相互交换 递归与非递归程序
- 二叉树中所有节点的左右子树相互交换 递归与非递归程序
- Java中图的创建与从任一节点开始递归遍历
- 如何从树叶层开始建树?
- 如何从树叶层开始建树二?
- 如何从树叶层开始建树三?
- 6_43_递归交换二叉树中所有节点的左右子树
- SQL2005递归(完整显示子树路径)
- MYSQL查询树表某个根节点的子树
- 【树递归】找包含节点0共M个节点的最大(权)连通子树||找最长直径
- 递归建树
- 1398 建树和叶子节点的个数
- 建树和叶子节点的个数 1398
- 满二叉排序树中查找三个节点的最小子树的根节点
- Nuva 示例代码(每日一帖)之 模板示例(2)
- 充实而繁忙的一天
- VC常用数据类型使用转换详解
- 浅谈ACCESS数据库升迁SQLSERVER
- 提高JSP应用程序运行速度的七大绝招
- 建树的基本思路:从根节点开始递归调用显示子树
- ASP.NET 程序当前占用内存
- polish samples的说明(初学很不错)
- PHP输出控制功能在简繁体转换中的应用
- 如何进行软件需求分析(转帖,作者不详)
- JSP中标签库的深入研究
- 如何使用Perl调用.Net的Web服务
- J2EE 全面简介
- 存储过程入门与提高(作者不详)