我使用的是递归是实现无限级树形菜单:

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 Power.Sbtree
{
    public partial class Left : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            showTree();
        }

        private void addChildNode(TreeNode parent, string parentID)
        {
            //获得以parent的ID为父节点的子结点
            DataTable dtChild = SqlHelper.ExecSQLDataTable("select * from tab_Sbtree where Sb_parentID='" + parentID + "'");
            if (dtChild.Rows.Count > 0)
            {
                for (int i = 0; i < dtChild.Rows.Count; i++)
                {
                    //TreeNode node1 = parent.ChildNodes.Add(dtChild.Rows[i][0].ToString().Trim(), dtChild.Rows[i][1].ToString().Trim(), 1);

                    TreeNode node1 = new TreeNode();
                    node1.Text = dtChild.Rows[i][1].ToString().Trim();
                    parent.ChildNodes.Add(node1);

                    addChildNode(node1, dtChild.Rows[i][0].ToString().Trim());
                }
            }
        }
        private void showTree()
        {
            try
            {
                treeView1.Nodes.Clear();
                DataTable dtEquipment = SqlHelper.ExecSQLDataTable("select * from tab_Sbtree where Sb_parentID='0'");  //读总根结点

                for(int i =0;i<dtEquipment.Rows.Count;i++)
                {
                   TreeNode node0 = new TreeNode();
                   node0.Text= dtEquipment.Rows[i][1].ToString().Trim();
                   treeView1.Nodes.Add(node0);//根节点

                   addChildNode(node0, dtEquipment.Rows[i][0].ToString().Trim());
                }

            }
            catch (SqlException ex)
            {
                //MessageBox.Show("数据库访问异常" + ex.Message.ToString(), "错误提示框", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Response.Write("<Script Language=JavaScript>alert('数据库访问异常!')</Script>");
            }
        }

        protected void treeView1_SelectedNodeChanged(object sender, EventArgs e)
        {

        }

        protected void treeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
        //    Session["tree"]=treeView1.test;
        }

    }
}

  我这借助的使用了sqlhelper 这个工具类,效果如下图

下面是我的数据库

这就是一个简单的树形菜单。

treeview树形菜单,递归的更多相关文章

  1. java构建树形菜单递归工具类

    1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...

  2. WPF树形菜单--递归与非递归遍历生成树结构的集合

    一.新建了WPF项目作为测试,使用TreeView控件进行界面展示. 第一步创建实体类TreeEntity: public class TreeEntity { private int _mid; p ...

  3. Unity 引擎UGUI之自定义树形菜单(TreeView)

    先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...

  4. Vue.js 递归组件实现树形菜单

    最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...

  5. jQuery树形菜单(1)jquery.treeview

    jQuery的树形插件资料URL:http://bassistance.de/jquery-plugins/jquery-plugin-treeview/从该网站Download得到jquery.tr ...

  6. TreeView树形控件递归绑定数据库里的数据

    TreeView树形控件递归绑定数据库里的数据. 第一种:性能不好 第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型) 第二步:前台代码 <% ...

  7. 用Vue.js递归组件构建一个可折叠的树形菜单

    在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', {   template: `<!--Invoking myself! ...

  8. Vue.js递归组件实现动态树形菜单

    使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...

  9. jquery树形菜单插件treeView

    Jquery的treeview很好用,如果是简单的树形菜单按照下面的源码实例模仿就可以. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...

随机推荐

  1. 关于PHPExcel类占用内存问题

    最近在帮一家公司做后台excel导出功能,使用的工具类是phpexcel,因为这个类功能比较强大.全面. 但是遇到下面一个问题: 当导出数据量达到一定数量级的时候,比如说1000条,服务器出现卡顿.白 ...

  2. 设计模式(九)外观模式Facade(结构型)

    设计模式(九)外观模式Facade(结构型) 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. ...

  3. C++ pair 使用方法

    类模板:template <class T1, class T2> struct pair 參数:T1是第一个值的数据类型,T2是第二个值的数据类型. 功能:pair将一对值组合成一个值, ...

  4. 斯坦福大学IOS开发课程笔记(第七课第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/31462099 作者:小马 这节课的内容太多,分两部分介绍.本节课主要是介绍怎样开发 ...

  5. 怎样删除在Github中创建的项目

    像我这种刚開始学习的人总会不可避免的创建了一些測试性的项目.随后自然就是要删除了.那么该怎样删除呢? 你此刻可能处于这个界面: 也可能处于这个界面: 假设是第一个界面直接点击右側的"Sett ...

  6. Codeforces 85D Sum of Medians(线段树)

    题目链接:Codeforces 85D - Sum of Medians 题目大意:N个操作,add x:向集合中加入x:del x:删除集合中的x:sum:将集合排序后,将集合中全部下标i % 5 ...

  7. Android 蓝牙( Bluetooth)耳机连接分析及实现

    Android 实现了对Headset 和Handsfree 两种profile 的支持.其实现核心是BluetoothHeadsetService,在PhoneApp 创建的时候会启动它. if ( ...

  8. VMware Workstation 9.0 安装苹果Mac OS X10.9系统

    摘自:http://www.wuwenhui.cn/3133.html 一.安装所需要的软件: 1.VMware Workstation 9.0 点击下载 2.unlock-all-v110.zip  ...

  9. FireMonkey下的异形窗体拖动(句柄转换)

    DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了. 最常见的就是拖拽了 先看 VCL时代 一个经典拖动代码 ReleaseCapture(); S ...

  10. json datetime转换问题

    我用Newtonsoft.Json.dll转换成json,这次是把一个集合转换成json,这个集合里有个DateTime类型的数据,转换完成后会变成/Date(1286375605000+0800)/ ...