Asp.net 2.0 Treeview 动态填充,并实现无限级树,
数据库表关键字段:
表: table1
type_id type_name per_type_id
0 根目录 -1
1 子目录 0
2 子目录2 0
3 子子目录 2
.
9 根目录二 -1
C#代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;



public partial class tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

TreeView1.Nodes.Clear();

DataTable dt = tree_table();
DataView dv = new DataView(dt);
dv.RowFilter = "type_id = 0";

foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv["type_name"].ToString();
node.Value = drv["type_id"].ToString();
node.NavigateUrl = "?s=" + drv["type_id"].ToString();
TreeView1.Nodes.Add(node);
AddChildNode(dt, node);
}
}

private DataTable tree_table()
{
//hooyesDataLink 为配置中数据连接字符串键名
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["hooyesDataLink"]);
SqlDataAdapter sda = new SqlDataAdapter("select * from table1", con);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}

#region 递归以实现无限级树
private void AddChildNode(DataTable dt, TreeNode node)
{
DataView dv = new DataView(dt);//建立dt的表视图
dv.RowFilter = "per_type_id = '" + node.Value + "'"; //过滤
foreach (DataRowView drv1 in dv)
{
TreeNode ChildNode = new TreeNode();
ChildNode.Text = drv1["type_name"].ToString();
ChildNode.Value = drv1["type_id"].ToString();
ChildNode.NavigateUrl = "?s=" + drv1["type_id"].ToString();
ChildNode.Expanded = true;//展开属性为FALSE

node.ChildNodes.Add(ChildNode);


AddChildNode(dt, ChildNode);
}
}
#endregion


}
效果:
数据库表关键字段:
表: table1









C#代码










































































效果:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述