ASP.NET 读数据库绑定到 TreeView 递归方式

创建表及插入模拟数据:
CREATE TABLE [sysMenuTree]( [NoteId] [ decimal ](18, 0) NOT NULL , [ParentId] [ decimal ](18, 0) NULL , [sText] [nvarchar](50) NULL , [sValue] [nvarchar](50) NULL , [sURL] [nvarchar](50) NULL , [sTarget] [nvarchar](50) NULL , [Chger] [nvarchar](50) NULL , [ChgTime] [nvarchar](50) NULL ) insert into sysMenuTree values (3,0,N '目錄' ,N '目錄' , '' , '' , '' , '' ) insert into sysMenuTree values (4,0,N '目錄' ,N '目錄' , '' , '' , '' , '' ) insert into sysMenuTree values (5,0,N '目錄' ,N '目錄' , '' , '' , '' , '' ) insert into sysMenuTree values (6,3,N '項目.1' ,N '項目.1' , '' , '' , '' , '' ) insert into sysMenuTree values (7,3,N '項目.2' ,N '項目.2' , '' , '' , '' , '' ) insert into sysMenuTree values (8,4,N '項目.1' ,N '項目.1' , '' , '' , '' , '' ) insert into sysMenuTree values (9,4,N '項目.2' ,N '項目.2' , '' , '' , '' , '' ) insert into sysMenuTree values (10,4,N '項目.3' ,N '項目.3' , '' , '' , '' , '' ) insert into sysMenuTree values (11,5,N '項目.1' ,N '項目.1' , '' , '' , '' , '' ) insert into sysMenuTree values (12,5,N '項目.2' ,N '項目.2' , '' , '' , '' , '' ) |
在ASP.NET中读取数据绑定到TreeView实现代码:
<%@ Page Language= "C#" AutoEventWireup= "true" CodeFile= "Default.aspx.cs" Inherits= "_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns= "http://www.w3.org/1999/xhtml" > <head runat= "server" > <title></title> </head> <body> <form id= "form1" runat= "server" > <div> <asp:TreeView ID= "treeMenu" runat= "server" > </asp:TreeView> </div> </form> </body> </html> |
using System; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { private readonly string ConnString = @"server=.\MSSQLSERVER2008;database=chart;uid=sa;pwd=123456" ; private DataTable dt = null ; protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { dt = new DataTable(); GetMenuToDataTable( "select * from sysMenuTree" ,dt); BindTree(dt, null , "0" ); } } private void BindTree(DataTable dtSource,TreeNode parentNode, string parentID) { DataRow[] rows = dtSource.Select( string .Format( "ParentID={0}" ,parentID)); foreach (DataRow row in rows) { TreeNode node = new TreeNode(); node.Text = row[ "sText" ].ToString(); node.Value = row[ "sValue" ].ToString(); BindTree(dtSource,node,row[ "NoteId" ].ToString()); if (parentNode == null ) { treeMenu.Nodes.Add(node); } else { parentNode.ChildNodes.Add(node); } } } private DataTable GetMenuToDataTable( string query,DataTable dt) { using (SqlConnection conn = new SqlConnection(ConnString)) { SqlCommand cmd = new SqlCommand(query,conn); SqlDataAdapter ada = new SqlDataAdapter(cmd); ada.Fill(dt); } return dt; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)