asp.net TreeView动态绑定数据库显示数据

简介:  假设在数据库中建立一张表, 如tb_treeview,如下创建         create table tb_treeview(                    id  int ...

 假设在数据库中建立一张表, 如tb_treeview,如下创建

         create table tb_treeview(

                    id  int not null,

                    displayName varchar(20),

                    parentId int ,

                    url varchar(100)

            );

 

向表中插入几个数据如:

       insert into tb_treeview(1,'中国',0,'');

       insert into tb_treeview(2,'安徽省',1,'');

       insert into tb_treeview(3,'合肥市',2,'');

       insert into tb_treeview(4,'江苏省',1,'');

       insert into tb_treeview(5,'南京市',4,'');

       insert into tb_treeview(6,'湖北省',1,'');

 

作为演示数据。

(1)、打开VS2005,新建一个网站项目,在Default.aspx.cs文件里添加如下代码:

...

   using System.Data.SqlClient;

  ....

   DataTable dt = new DataTable();

   public void Page_Load(object sender,EventArgs e)

   {

        if(!IsPostBack)

        {

               try

               {

                      string conString = "Data Source=.;uid=sa;pwd=;Database=master";

                      SqlConnection con = new SqlConnection(conString);

                      con.Open();

                      string strSQL = "select * from tb_treeview";

                      SqlDataAdapter da = new SqlDataAdapter(strSQL,con);

                      da.Fill(dt);

               }

               catch(Exception e)

               {

 

               }

               finally

               {

                     con.Close();

               }

               AddTreeNode(0,(TreeNode)null);

        }

   }

 

   protected void AddTreeNode(int parentId,TreeNode pNode)

   {

            TreeNode tn1 = new TreeNode(); 

            DataView dv= new DataView(dt);

            //过滤parentId,得到当前节点的所有子节点

            dv.RowFilter = "parentId="+parentId;

             foreach(DataRowView drv in dv)

             {

                   if(pNode==null)

                   {

                          tn1.Text = drv["displayName"].ToString(); //节点上要显示的名称

                          tn1.NavigateUrl = drv["url"].ToString();  //点击节点名称,跳转到指定url页面

                          TreeView1.Nodes.Add(tn1); //将根节点加入到TreeView中去

                          tn1.Expanded = true;

                          //递归调用

                          AddTreeNode(Int32.parse(drv["id"].ToString()),tn1);

                   }

                   else

                   {

                          TreeNode tn2 = new TreeNode();

                           tn2.Text = drv["displayName"].ToString();

                           tn2.NavigateUrl = drv["url"].ToString();

                           pNode.ChildNodes.Add(tn2);

                           tn1.Expanded = true;

                           //递归调用

                           AddTreeNode(Int32.parse(drv["id"].ToString()),tn2);

                   }

             }

   }

 

(2)、在浏览器中运行,打开效果如下

            +中国

             |+安徽省

             |  |_合肥市

             |+江苏省

             |   |_南京市

             |+湖北省

需要说明的是,在实际开发中,关于数据库的数据访问应该放在DAL层里,这里只是做简单的演示而已。

如果想改变已经选择的节点,和移动到该节点时字体的呈现颜色的话,可以这样设置:

<asp:TreeView ID="TreeView1" runat="server" ShowLines="True" CssClass="Menu">
            <RootNodeStyle  ForeColor="red"/>
            <SelectedNodeStyle ForeColor="gray" />
            <HoverNodeStyle ForeColor="aqua" />

</asp:TreeView>

相关文章
|
9天前
|
关系型数据库 MySQL 数据库
ORM对mysql数据库中数据进行操作报错解决
ORM对mysql数据库中数据进行操作报错解决
34 2
|
8天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
10天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
5天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
14天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
阿里云数据库重磅升级!元数据服务OneMeta + OneOps统一管理多模态数据
|
24天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
47 6
|
1月前
|
SQL 存储 关系型数据库
C#一分钟浅谈:使用 ADO.NET 进行数据库访问
【9月更文挑战第3天】在.NET开发中,与数据库交互至关重要。ADO.NET是Microsoft提供的用于访问关系型数据库的类库,包含连接数据库、执行SQL命令等功能。本文从基础入手,介绍如何使用ADO.NET进行数据库访问,并提供示例代码,同时讨论常见问题及其解决方案,如连接字符串错误、SQL注入风险和资源泄露等,帮助开发者更好地利用ADO.NET提升应用的安全性和稳定性。
63 6
|
2月前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
34 1
下一篇
无影云桌面