用TreeView实现树菜单

数据结构如下:

MenuID MenuName MParentID MenuLevel
1001 菜单1                     0                   0
1002 菜单2                     0                  0
1003 菜单3                    0                   0
1004 菜单4                   0                    0
2001 菜单11                1001               1
2002 菜单12                  1001               1
2003 菜单21                1002                   1
3001 菜单111                 2001               2
 

方法解析:

先从数据集中获得数据,递归对增加菜单

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  数形菜单 : System.Web.UI.Page
{
    
#region  全局变量
    DataSet ds 
=   new  DataSet();
    
#endregion
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
        
if  ( ! Page.IsPostBack)
        {
            ds 
=   this .CreateDataSet();
            
this .AddTreeMenu(tvMenu.Nodes,  " 0 " );
        }
    }
    
///   <summary>
    
///  增加树形菜单的各个项
    
///   </summary>
    
///   <param name="tnc"></param>
    
///   <param name="parentID"></param>
     protected   void  AddTreeMenu(TreeNodeCollection tnc, string  parentID)
    {
        DataView dv 
=   new  DataView();
        dv.Table 
=  ds.Tables[ " Menu " ]; // 这里非常关键,不能够写成dv=ds.Tables["Menu"].DefaltView,否则将会出错
        dv.RowFilter  =   " MParentID=' "   +  parentID  +   " ' " ;
        
if  (dv.Count  !=   0 )
        {
            TreeNode tn;
            
for  ( int  i  =   0 ; i  <  dv.Count; i ++ )
            { 
                
                traceMessage.InnerHtml 
+=  i  +   " <br> " ;
                tn 
=   new  TreeNode();
                tn.Text 
=  dv[i][ " MenuName " ].ToString();
                tn.Value
=  dv[i][ " MenuID " ].ToString();
                tnc.Add(tn);
                traceMessage.InnerHtml 
+=  dv.Count + " <br> " ;
                AddTreeMenu(tn.ChildNodes, tn.Value);
                
            }
        }
    }
    
    
///   <summary>
    
///  创建菜单数据
    
///   </summary>
    
///   <returns></returns>
     protected  DataSet CreateDataSet()
    {
        SqlConnection sc 
=   new  SqlConnection();
        sc.ConnectionString 
=  ConfigurationSettings.AppSettings[ " connStr " ];
        SqlCommand comm 
=  sc.CreateCommand();
        comm.CommandText 
=   " select * from Menu " ;
        DataSet ds
= new  DataSet();
        SqlDataAdapter da
= new  SqlDataAdapter(comm);
        da.Fill(ds,
" Menu " );
        
return  ds;
    }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值