递归函数实现无限级树形结构的一种方法

1.建表(SQL Server)
CREATE   TABLE  menu
(
    ID 
int   IDENTITY  ( 1 1 NOT   NULL  ,
    Title 
varchar ( 50 )   NULL  ,
    url 
varchar ( 50 null ,
    description 
varchar ( 50 null ,
    ParentID 
int   NULL  
ON   PRIMARY

2.在页面上放一个Treeview1,然后写代码
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  treeview2 : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        SqlConnection myConn 
= new SqlConnection("user id=sa;password=123;Database =test;data source=jeff;");
        
try
        
{
            
//初始化连接字符串
            
            SqlDataAdapter myAdapter 
= new SqlDataAdapter("select * from menu order by parentID ", myConn); ;
            DataSet ds 
= new DataSet();
            myAdapter.Fill(ds);
            
this.ViewState["ds"= ds;
        }

        
catch (Exception ex)
        
{
            Session[
"Error"= ex.ToString();
            
        }

        
finally
        
{
            myConn.Close();
        }

        
//调用递归函数,完成树形结构的生成
        AddTree(0, (TreeNode)null);

    }



    
//递归添加树的节点
    public void AddTree(int ParentID, TreeNode pNode)
    
{
        DataSet ds 
= (DataSet)this.ViewState["ds"];
        DataView dvTree 
= new DataView(ds.Tables[0]);
        
        
//过滤ParentID,得到当前的所有子节点
        dvTree.RowFilter = "[PARENTID] = " + ParentID;

        
foreach (DataRowView Row in dvTree)
        
{
            TreeNode Node 
= new TreeNode();
            
if (pNode == null)
            
{    //添加根节点
                Node.Text = Row["Title"].ToString();
                TreeView1.Nodes.Add(Node);
                Node.Expanded 
= true;
                AddTree(Int32.Parse(Row[
"ID"].ToString()), Node);        //再次递归
            }

            
else
            
{   //̀添加当前节点的子节点
                Node.Text = Row["Title"].ToString();
                pNode.ChildNodes.Add(Node);
                Node.Expanded 
= true;
                AddTree(Int32.Parse(Row[
"ID"].ToString()), Node);     //再次递归
            }

        }

    }
   

}

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值