using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Data.SqlClient;

namespace WebApp
{
    public partial class LoadMenu : System.Web.UI.Page
    {
        DataSet ds = null;

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //this.InitPage();

ds = GetDB("select * from page");
                TreeNode pTreeNpd = null;
                GetTreeNode("0",pTreeNpd);
            }
        }

private void InitPage()
        {
            TreeNode treeNode = this.GetTreeNode();
            this.TreeViewMenu.Nodes.Add(treeNode);
        }

private TreeNode GetTreeNode()
        {
            TreeNode treeNode = new TreeNode("菜单导航");
            DataSet ds = this.GetDB("select * from page where Parent = '0'");
            foreach (DataRow masterRow in ds.Tables[0].Rows)
            {
                    TreeNode masterNode = new TreeNode((string)masterRow["Text"]);
                    masterNode.NavigateUrl = (string)masterRow["Page"];
                    treeNode.ChildNodes.Add(masterNode);

DataSet ds11 = this.GetDB("select * from page where Parent = '" + masterRow["RID"] + "'");
                    foreach (DataRow item in ds11.Tables[0].Rows)
                    {
                        TreeNode masterNode1 = new TreeNode((string)item["Text"]);
                        masterNode1.NavigateUrl = (string)item["Page"];
                        masterNode.ChildNodes.Add(masterNode1);
                    }

}
            return treeNode;
        }

private TreeNode GetTreeNode(string Parent, TreeNode treeNode)
        {
            DataView dv = ds.Tables[0].DefaultView;
            dv.RowFilter = " [Parent]='" + Parent + "'";
            foreach (DataRowView item in dv)
            {
                TreeNode tttrr = new TreeNode();
                if (treeNode == null)
                {
                    tttrr.Text = item["Text"].ToString();
                    TreeViewMenu.Nodes.Add(tttrr);

GetTreeNode(item["rid"].ToString(), tttrr);
                }
                else
                {
                    tttrr.Text = item["Text"].ToString();
                    tttrr.NavigateUrl = (string)item["Page"];
                    treeNode.ChildNodes.Add(tttrr);
                }

}
            return null;
        }

private DataSet GetDB(string sql)
        {
            SqlConnection con = new SqlConnection();
            con.ConnectionString = “";
            if(con.State == ConnectionState.Closed)
            {
                con.Open();
            }

SqlDataAdapter da = new SqlDataAdapter(sql, con);

DataSet ds = new DataSet();
            da.Fill(ds);

return ds;
        }
    }
}

Asp.net树形递归算法的更多相关文章

  1. asp.net 树形控件 $.fn.zTree.init

    在网页中通过jquery脚本来构筑树形控件将是一个不错的选择,比如有一个文本框,当鼠标点击的时候,像弹出一个下拉框一样弹出一个树形控件,这似乎是一个不错的控制.下面主要讲讲这种树形控件的实现.为了能使 ...

  2. ASP.NET使用递归算法实现画树程序

    实现效果如下:(随机生成) using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  3. ASP.NET树形控件TreeView的递归绑定

    来自:http://blog.csdn.net/xqf003/article/details/4958727

  4. Jquery树形控件 $.fn.zTree.init

    https://www.cnblogs.com/jin-/p/4646202.html asp.net 树形控件 $.fn.zTree.init 在网页中通过jquery脚本来构筑树形控件将是一个不错 ...

  5. 【Tree 1】树形结构数据呈现的递归算法实现

    一.基本概况 在我的项目中,常常会用到树形结构的数据,最为明显的就是左边菜单栏,类似于window folder一样的东西. 而我之前一直是借助前端封装好的ZTree等工具实现展示,而后台则通常使用递 ...

  6. Asp.Net MVC页面静态化功能实现二:用递归算法来实现

    上一篇提到采用IHttpModule来实现当用户访问网站的时候,通过重新定义Response.Filter来实现将返回给客户端的html代码保存,以便用户下一次访问是直接访问静态页面. Asp.Net ...

  7. 使用递归算法结合数据库解析成java树形结构

    使用递归算法结合数据库解析成java树形结构 1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHA ...

  8. 递归算法结合数据库 解析 java树形结构

    1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHAR2(50), PID NUMBER //父节 ...

  9. 在ASP.NET MVC下实现树形导航菜单

    在需要处理很多分类以及导航的时候,树形导航菜单就比较适合.例如在汽车之家上: 页面主要分两部分,左边是导航菜单,右边显示对应的内容.现在,我们就在ASP.NET MVC 4 下临摹一个,如下: 实现的 ...

随机推荐

  1. 根据N种规格中的M种规格值生成的全部规格组合的一种算法

    近来在开发SKU模块的时候,遇到这样一个需求,某种商品有N(用未知数N来表示是因为规格的数组由用户制定且随时可以编辑的,所以对程序来说,它是一个未知数)类规格,每一类规格又有M个规格值,各种规格值的组 ...

  2. web前端基础知识及快速入门指南

    web前端基础知识及快速入门指南 做前端开发有几个月了,虽然说是几个月,但是中间断断续续的上课.考试以及其它杂七杂八的事情,到现在居然一直感觉自己虽然很多前端的知识很眼熟,却也感觉自己貌似也知识在门口 ...

  3. js之浏览器对象模型(BOM)

    一.BOM的层次结构: window(可以访问BOM中的所有元素,是最顶层的元素)下一层包括如下: →document (document的属性:forms.cookie.links/anchors. ...

  4. HackerRank "Kundu and Tree" !!

    Learnt from here: http://www.cnblogs.com/lautsie/p/3798165.html Idea is: we union all pure black edg ...

  5. (转)ORACLE触发器详解

    本文转载自:http://blog.csdn.net/indexman/article/details/8023740/ ORACLE PL/SQL编程之八: 把触发器说透 本篇主要内容如下: 8.1 ...

  6. 【转】Redis主从复制简介

    一.Redis的Replication:    这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理 ...

  7. bzoj4229: 选择

    Description 现在,我想知道自己是否还有选择. 给定n个点m条边的无向图以及顺序发生的q个事件. 每个事件都属于下面两种之一: 1.删除某一条图上仍存在的边 2.询问是否存在两条边不相交的路 ...

  8. windows mobile仿真器内存调整

    1.打开VS,进入工具,选项. 2.点击设备,在右侧选中要调整的模拟器,点属性. 3.点击仿真器选项. 4.勾选 指定RAM大小. 5.重启仿真管理器.

  9. sublime text2 css格式化插件

    插件下载地址:https://gist.github.com/2863474 插件,可以将CSS格式化成一行,也可以将一行格式化成多行. 下载解压缩之后,将compact_expand_css_com ...

  10. iphone dev 入门实例5:Get the User Location & Address in iPhone App

    Create the Project and Design the Interface First, create a new Xcode project using the Single View ...