递归生成TreeView

PB 使用Treeview调用数据库生成多级树 利用数据库中的多级菜单表进行TreeView的数据树生成。 在窗体的Open()事件中,tv_1位TreeView的控件 string ls_code, ls_name, ls_lvcode, ls_plvcodestring ls_lastplvcode,ls_lastlvcodetreeviewitem ltvi_insert, ltvi_findlong ll_roothan 阅读详情

本文展示如何利用递归生成Treeview,满足站点导航的需要。废话不多讲,直接上代码。
一.数据库结构


1  CREATE   TABLE   [ dbo ] . [ MenuTable ] (
2       [ MenuID ]   [ int ]   IDENTITY ( 1 , 1 )  NOT   NULL ,
3       [ MenuName ]   [ nvarchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL ,
4       [ MenuUrl ]   [ nvarchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL ,
5       [ ParentID ]   [ int ]   NULL
6  )  ON   [ PRIMARY ]


写入几条数据进去       INSERT INTO MenuTable VALUES('网易','http://www.163.com','0')
                                       INSERT INTO MenuTable VALUES('网易邮箱','http://mail.163.com','1')
                                       INSERT INTO MenuTable VALUES('新浪','http://www.sina.com','0')
二.用户控件代码(HTML)


1  <% @ Control Language = " C# "  AutoEventWireup = " true "  CodeFile = " Navigation.ascx.cs "  Inherits = " Navigation "   %>
2  
3  < asp:TreeView  ID ="tvPet"  runat ="server" ></ asp:TreeView >


三.后台CS代码


 1  using  System;
 2  using  System.Data;
 3  using  System.Configuration;
 4  using  System.Collections;
 5  using  System.Web;
 6  using  System.Web.Security;
 7  using  System.Web.UI;
 8  using  System.Web.UI.WebControls;
 9  using  System.Web.UI.WebControls.WebParts;
10  using  System.Web.UI.HtmlControls;
11  
12  using  Model;
13  using  System.Collections.Generic;
14  using  localhost;
15  
16  public   partial   class  Navigation : System.Web.UI.UserControl
17  {
18       protected   void  Page_Load( object  sender, EventArgs e)
19      {
20           if  ( ! IsPostBack) 
21          {
22               this .ViewState.Add( " TreeMenuSource " ,GetTreeData());
23              InitTreeView( 0 ,  null );
24          }
25      }
26  
27       ///   <summary>
28       ///  递归产生树
29       ///   </summary>
30       ///   <param name="pid"></param>
31       ///   <param name="pNode"></param>
32       protected   void  InitTreeView( int  pid,TreeNode pNode) 
33      {
34  
35          List < MenuTableInfo >  listMT  =  (List < MenuTableInfo > ) this .ViewState[ " TreeMenuSource " ];
36          List < MenuTableInfo >  subTreeMenu  =  listMT.FindAll( delegate (MenuTableInfo mt) 
37          {
38               if  (mt.ParentID  ==  pid)
39                   return   true ;
40               return   false ;
41          });
42  
43           foreach  (MenuTableInfo mInfo  in  subTreeMenu) 
44          {
45              TreeNode node  =   new  TreeNode();
46              node.Text  =  mInfo.MenuName;
47              node.Expanded  =   true ;
48              node.Value  =  mInfo.MenuID.ToString();
49              node.NavigateUrl  =  mInfo.MenuUrl;
50  
51               if  (pNode  ==   null )
52              {
53                   this .tvPet.Nodes.Add(node);
54              }
55               else  
56              {
57                  pNode.ChildNodes.Add(node);
58              }
59              InitTreeView(mInfo.MenuID, node);
60          }
61      }
62      
63       ///   <summary>
64       ///  获得TreeView Data
65       ///   </summary>
66       ///   <returns></returns>
67       protected  List < MenuTableInfo >  GetTreeData() 
68      {
69          GetDateFromServer ws  =   new  GetDateFromServer();
70          List < MenuTableInfo >  listMenuTable  =   new  List < MenuTableInfo > ();
71          DataTable dt  =  ws.GetMenuTable().Tables[ 0 ];
72  
73           foreach  (DataRow dr  in  dt.Rows) 
74          {
75              MenuTableInfo mt  =   new  MenuTableInfo();
76              mt.MenuID  =  Convert.ToInt32(dr[ " MenuID " ]);
77              mt.MenuName  =  dr[ " MenuName " ].ToString();
78              mt.MenuUrl  =  dr[ " MenuUrl " ].ToString();
79              mt.ParentID  =  Convert.ToInt32(dr[ " ParentID " ]);
80              listMenuTable.Add(mt);            
81          }
82           return  listMenuTable;
83      }
84  }
85  


四.效果

保姆级解读:Autosar网络管理报文里,每个字节到底在说什么?(附CAN/CANFD实例) 本文详细解读了Autosar网络管理报文的每个字节含义,包括报文ID、数据域及关键控制信息CBV(Control Bit Vector),并通过CAN/CANFD实例展示如何逐字节解析。文章还对比了CAN与CANFD的差异,提供了网络管理状态机与报文的关联分析,帮助开发者深入理解车载网络通信机制。 阅读详情

相关推荐

C#递归树的生成级Treeview空间的应用实例源码

//设定生成树的原始数据 void getdatable() { tblDatas.Columns.Add("groupid", Type.GetType("System.String")); tblDatas.Columns.Add("groupname", Type.GetType("System.String")); tblDatas.Columns.Add("parentid", Type.GetType("System.String")); tblDatas.Rows.Add(new object[] { "1", "机关", "0" }); tblDatas.Rows.Add(new object[] { "2", "学院", "0" }); tblDatas.Rows.Add(new object[] { "3", "教学管理中心", "1" }); tblDatas.Rows.Add(new object[] { "4", "校园管理中心", "1" }); tblDatas.Rows.Add(new object[] { "5", "数据中心", "3" }); tblDatas.Rows.Add(new object[] { "6", "信息中心", "3" }); tblDatas.Rows.Add(new object[] { "7", "一卡通", "4" }); tblDatas.Rows.Add(new object[] { "8", "保卫处", "4" }); tblDatas.Rows.Add(new object[] { "9", "信工系", "2" }); tblDatas.Rows.Add(new object[] { "10", "艺术系", "2" }); dataGridView1.DataSource = tblDatas; } //递归生成树函数 public void AddTree(int ParentID, TreeNode pNode) { DataTable dt = new DataTable(); dt = tblDatas; DataView dvTree = new DataView(dt); //过滤ParentID,得到当前的所有子节点 dvTree.RowFilter = "parentid = " + ParentID; foreach (DataRowView Row in dvTree) { TreeNode Node = new TreeNode(); if (pNode == null) { //添加根节点 Node.Text = Row["groupname"].ToString(); treeView1.Nodes.Add(Node); AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归 } else { //添加当前节点的子节点 Node.Text = Row["groupname"].ToString(); pNode.Nodes.Add(Node); AddTree(Int32.Parse(Row["groupid"].ToString()), Node); //再次递归 } } } //调用递归函数在treeView1里面显示给出数据的树形图 private void button1_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); AddTree(0, (TreeNode)null); }

PB中TreeView控件使用技巧

PB中TreeView控件使用技巧 2007-01-28 00:09:20 分类: 数据库开发技术 PowerBuilder中的TreeView 控件为树状游览,类似于WINDOWS的资源管理器,其特点是信息项呈树状层次结构,能更清晰地表现主、细目关系 ,操作非常方便。 PowerBuilder中的TreeView 控件为树状游览,类似于WINDOWS的资源管理器,其

tlammon的专栏 7228

由特定数据库表格式(3个字段)生成TreeView树型

读取特定格式的表来生成TREEVIEW树。表格式如下:TYPE_ID 编号,一个记录就是一个结点TYPE_NAME 文本TYPE_FROM_ID 父项编号,该结点的上级结点的编号,程序根据这个编号来安排该结点应放在哪里,根结点的父项编码为 0。程序支持对添加、删除、修改等操作。

PB下使用TreeView控件实现多级分类检索

PowerBuilder中的TreeView控件为树状列表,其特点是信息项呈树状层次结构,且形式灵活,可展开也可回缩,使用鼠标进行控制,操作简便。因此在应用中,可将其与DataWindow配合,一个提供信息的分类体系,一个提供具体信息,实现信息的多级分类检索,这样可大大地方便查询,提高系统的实用性。     在PowerBuilder下,TreeView控件的开发技术一般较为复杂,但如果将它

tlammon的专栏 2396

pb动态生成树

pb动态生成树

CANoe基础讲解01:从零开始使用CANoe轻松搭建你的第一个CAN网络

本文是一篇CANoe软件入门实操指南,逐步演示了如何从零创建并运行一个CAN FD仿真工程。内容包括:启动软件、配置硬件通道与网络、加载DBC数据库、使用CAPL编写仿真节点发送CAN报文,最终启动测量并在Trace窗口中查看通信结果。通过七个清晰步骤,帮助初学者快速掌握CANoe基本操作,完成首个可运行的仿真网络搭建

车载网络小D的博客 1573

WPF下递归生成树形数据绑定到TreeView上(转)

WPF下递归生成树形数据绑定到TreeView上 最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="departmentTree" Height="500" Width="500"> <TreeVie...

weixin_30412167的博客 221

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

java递归 treeview_读XML文件动态生成TreeView (递归生成)

private void InstructorTree_Load(object sender, EventArgs e){xmlfile = Application.StartupPath + "\\CC08Help.xml";GetInsEvent += new GetInstructorHandle(HelpForm_GetInsEvent);GetHtmlEvent += new GetNo...

weixin_28733777的博客 201

Android逆向实战:抖音聊天记录数据库解析与导出(附完整SQL查询)

本文提供了一份Android逆向实战指南,详细解析了抖音聊天记录数据库的结构与导出方法。通过定位核心的`im.db`数据库文件,深度解读conversation_list、msg等关键表结构,并附上完整的SQL查询语句,帮助开发者或研究人员安全、合规地提取和分析本地聊天数据,适用于移动安全研究与数据分析场景。

mango的博客 858

【Altium Designer】Off grid pin解决方法

​今天我画完原理图编译时,出现了太多的黄色(出现warning警告提示)Off grid pin警告,这个警告并不是原理图电气连接出问题了,而是元器件或器件PIN脚没有和栅格对齐造成的原因。再编译还是出现这个警告。 最后经过不断翻阅网上经验和实践,才最终解决,本经验详细记录了解决该警告的有效方法。 解决方案:以下是问题解决步骤... ​

夜半少年的博客 7548

递归,根据查询结果动态生成TreeView

递归,根据查询结果动态生成TreeView 数据表: 相关C#代码: /// <summary> /// 根据递归查询结果动态生成TreeView /// 递归查询,表做为参数传递过来 /// </summary> /// <param name="nodes">TreeView的节点集合</param> /// <pa...

weixin_30776545的博客 144

cefsharp139-H264-X86升级测试(MP4)-支持PDF预览-chromium7258定制浏览器

CEFSharp 139.x版本升级测试已完成,该版本支持64位系统(需选择x86架构)及WinForms.NETCore(.NET8)。升级内容包括H264文件编译支持Mp4播放,并覆盖WPF、WinForms等平台。文中提供了版本替换方法及不同系统的版本建议(如Win10/11推荐111/133/134/139版)。此外,文章还列举了CEFSharp的多种应用场景,包括浏览器开发、B/S系统封装、资源抓取等,同时指出当前版本均需自行编译以支持MP4播放。详细图文说明及旧版链接已附在正文中。

无线智能模块 可视DIY智能专家 1298

IList接口数据动态、递归生成TreeView

TreeView导航控件用站点地图(web.sitemap)和Xml(xmlFile.xml)来绑定,很简单,也很实用。但,如果要实现增加,删除,修改,查询等操作,还需要动态生成,这在后台管理系统中经常会用到。 本文讲解的是一个三层架构中从SQL Server数据库中获得的Ilist接口数据,动态生成TreeView的一个实例。为演示方便,这个数据我们用程序生成,想关的辅助代码尽可能地进行了简化

1622

搭建ROS小车真的难吗?

搭建ROS小车真的难吗?不难 1.引言 本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。 国

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

手把手教你如何在应用宝的Android模拟器安装第三方应用方法

通过上述步骤,你就能在腾讯应用宝模拟器中安装并运行本地的第三方APK应用了。虽然稍显繁琐,但操作起来并不复杂,只要按照步骤一步步做,就能顺利完成。希望这篇文章能帮助到遇到类似问题的你!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7216

TreeView递归生成Node

以下是递归生成树的代码:

feng306139124的专栏 341

Spring Boot集成ShardingSphere实现数据加密及数据脱敏 | Spring Cloud 48

利用ShardingSphere实现: - 数据加密 - 数据脱敏

gmHappy 1万+

TreeView递归生成树形菜单

主要用到递归循环获取子结点 /// <summary> /// 生成根节点 /// </summary> /// <param name="treeview"></param> protected void BindTreeView(long ID, TreeView treeview) {...

deluo7944的博客 204

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

根据IList递归生成TreeView

在一个项目中采用了NHibernate做为持久层,在开发的过程中遇到了根据数据库动态生成TreeView的问题。在网络检索相关资料时发现,大部分都存在问题,而有一部分又是采用DataSet作为数据载体的。而NHibernate返回的结果我是以Ilist的方式体现的,没办法,只能根据网上的资料自己改写了。下面是递归生成TreeView的具体代码:    ///     /// 加载前台栏目配置表

2005

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java递归 treeview_asp.net TreeView递归循环子节点生成树形菜单实例

本文实例讲述了asp.net TreeView递归循环子节点生成树形菜单的方法。分享给大家供大家参考,具体如下:这里主要用到递归循环获取子结点/// /// 生成根节点/// /// protected void BindTreeView(long ID, TreeView treeview){DataTable dt = menuLogic.GetMenu2(ID, User.Identity....

weixin_28676181的博客 176

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# 中采用treeview递归生成目录树(Winform和Webform两种)

部门表: 课程表: 查询结果结构: 数据结构分析,部门分为部门id和部门名称;课程分为课程id,课程名称,课程路径和课程所属部门。 要求以部门为父节点展示不同部门下的课程。 Winform采用treeview递归生成目录树 using System; using System.Collections.Generic; using System.Component...

Goenken博客 4482
上一篇: 条形码知识
下一篇: 法语输入问题
heyangbin
博客等级 码龄19年 57粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值