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 ...
随机推荐
- ZOJ 3329 One Person Game 【概率DP,求期望】
题意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0 设dp[i]表示达到 ...
- HDU 3917 最大权闭合图 求最小割
具体参考http://blog.csdn.net/power721/article/details/6665750 TODO //#pragma comment(linker, "/STAC ...
- C++编译时函数名修饰约定规则(很具体),MFC提供的宏,extern "C"的作用
调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数 ...
- UVA 531 - Compromise(dp + LCS打印路径)
Compromise In a few months the European Currency Union will become a reality. However, to join th ...
- Spring连接MySQL、Oracle和SQL Server
其中applicationContext.xml的配置如下: <?xml version="1.0" encoding="UTF-8"?> < ...
- eclipse java快捷模板 快捷键大全
建议没事研究研究自己吃饭的工具,俗话说工欲善其事必先利其器嘛. 首先,快捷键这种东西大家都会知道点,但是很少人重视javaEditorTemplate这块.先介绍下Template java编辑模板 ...
- WinForm 使用皮肤,且单击按更换皮肤。
运行效果: 首先把DLL程序集文件和SSK皮肤文件放在要运行程序的DEBug文件夹下,然后引入引用. 之后可以在程序里写代码了. private void Form2_Load(object send ...
- stm32中断优先级
VIC_IRQChannelPreemptionPriority:先占优先级 NVIC_IRQChannelSubPriority:从优先级 高先占优先级中断可以打断低先占优先级的中断,即可中断嵌套 ...
- java--异常处理总结
[在程序中抛出异常] 在程序中抛出异常,一定要使用关键字throw. throw+异常实例对象. public class Demo2 { public static void main(String ...
- 回归基础从新认识——HTML+CSS
前言 这段时间工作没那么繁杂,索性就想说来套系统的学习,之前去面试的时候,有被问及些基础的知识,居然回答不上来,也不能说是回答不上吧,回答的不全面.前端群上问了那个机构比较好,选择了慕课网.看了一段时 ...