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>

相关文章
|
7月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
79 4
|
7月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
167 0
|
7月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
90 0
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
199 3
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
4月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
|
5月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
4月前
|
存储 开发框架 .NET
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
|
4月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?