treeview树形菜单,递归
我使用的是递归是实现无限级树形菜单:
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树形菜单,递归的更多相关文章
- java构建树形菜单递归工具类
1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...
- WPF树形菜单--递归与非递归遍历生成树结构的集合
一.新建了WPF项目作为测试,使用TreeView控件进行界面展示. 第一步创建实体类TreeEntity: public class TreeEntity { private int _mid; p ...
- Unity 引擎UGUI之自定义树形菜单(TreeView)
先上几张效果图: 如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三 ...
- Vue.js 递归组件实现树形菜单
最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...
- jQuery树形菜单(1)jquery.treeview
jQuery的树形插件资料URL:http://bassistance.de/jquery-plugins/jquery-plugin-treeview/从该网站Download得到jquery.tr ...
- TreeView树形控件递归绑定数据库里的数据
TreeView树形控件递归绑定数据库里的数据. 第一种:性能不好 第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型) 第二步:前台代码 <% ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
- Vue.js递归组件实现动态树形菜单
使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...
- jquery树形菜单插件treeView
Jquery的treeview很好用,如果是简单的树形菜单按照下面的源码实例模仿就可以. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
随机推荐
- 安卓Launcher之获取手机安装的应用列表,安卓launcher
Launcher中最主要的就是获取所有应用列表的入口以及图标,一般获取的方法有两种: PackageInfo ResolveInfo 运行获取所有APP的Launcher并且允许进行点击事件,进入到应 ...
- linux下find命令-atime,-ctime,-mtime真正含义
linux下的-atime,-ctime,-mtime含义我们经常会在论坛或者群里面被问到,在linux或者unix下如何查看某文件的创建日期?经常又会有人说用find命令加选项-ctime,其实这里 ...
- ubuntu 安装python,easy_install和pip
ubuntu12.04默认安装的python为 ms@ubuntums:~$ pythonPython 2.7.3 (default, Aug 1 2012, 05:16:07) 我需要用python ...
- 基于visual Studio2013解决C语言竞赛题之0509杨辉三角
题目
- Use Node.js DDP Client on Arduino Yun to Access Meteor Server
Use Node.js DDP Client on Arduino Yun to Access Meteor Server 概述 在Arduino Yun上安装 Node.js, 并測试与 Meteo ...
- 使用storyboard实现页面跳转,简单的数据传递
由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我 也追随时尚,直接开始使用storyboard.(不料在涉及到页面跳转的时候,遇到的问题是:点击后没有任何反应)众所周知 ...
- swf上传文件
以下是自学it网--中级班上课笔记 网址:www.zixue.it 引入的js包自己在网上找一个,这里好像不支持上传文件,反正我没找到,呵呵~~ html文件 <!DOCTYPE html PU ...
- iOS-响应上下左右滑动手势
-(void)viewDidLoad{ UISwipeGestureRecognizer *recognizer; recognizer = [[UISwipeGestureRecognizer al ...
- 输入输出函数 I/O函数之perror()
perror()函数的函数原型 void perror(char const *message); 它会将message信息输出出来,后面再加上错误原因字符串. 下面是来自百度百科的实例: #incl ...
- 文件打包bundle
做项目时,经常会有一些资源拷来拷去会很麻烦,打包这些文件到项目里会方便很多! 首先把文件放到一个文件夹里 然后重命名文件夹为iToast.bundle 拖到项目里 如何访 ...