ASP.NET 递归将分类绑定到 TreeView

原始问题来源:http://topic.youkuaiyun.com/u/20101213/10/e0616370-4790-4542-816e-2ee960defbc0.html

 

 

 

创建表及插入模拟数据:

CREATE   TABLE   [ dbo ] . [ sysMenuTree ] (
[ NoteId ]   [ decimal ] ( 18 0 NOT   NULL ,
[ ParentId ]   [ decimal ] ( 18 0 NULL ,
[ sText ]   [ nvarchar ] ( 50 NULL ,
[ sValue ]   [ nvarchar ] ( 50 NULL ,
[ sURL ]   [ nvarchar ] ( 50 NULL ,
[ sTarget ]   [ nvarchar ] ( 50 NULL ,
[ Chger ]   [ nvarchar ] ( 50 NULL ,
[ ChgTime ]   [ nvarchar ] ( 50 NULL ,
 
CONSTRAINT   [ PK_sysMenuTree ]   PRIMARY   KEY   CLUSTERED   
(
[ NoteId ]   ASC
)
WITH  (PAD_INDEX  =   OFF , STATISTICS_NORECOMPUTE  =   OFF , IGNORE_DUP_KEY  =   OFF , ALLOW_ROW_LOCKS  =   ON , ALLOW_PAGE_LOCKS  =   ON ON   [ PRIMARY ]
ON   [ PRIMARY ]

insert   into  sysMenuTree  values ( 3 , 0 ,N ' 目錄 ' ,N ' 目錄 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 4 , 0 ,N ' 目錄 ' ,N ' 目錄 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 5 , 0 ,N ' 目錄 ' ,N ' 目錄 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 6 , 3 ,N ' 項目.1 ' ,N ' 項目.1 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 7 , 3 ,N ' 項目.2 ' ,N ' 項目.2 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 8 , 4 ,N ' 項目.1 ' ,N ' 項目.1 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 9 , 4 ,N ' 項目.2 ' ,N ' 項目.2 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 10 , 4 ,N ' 項目.3 ' ,N ' 項目.3 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 11 , 5 ,N ' 項目.1 ' ,N ' 項目.1 ' , '' , '' , '' , '' )
insert   into  sysMenuTree  values ( 12 , 5 ,N ' 項目.2 ' ,N ' 項目.2 ' , '' , '' , '' , '' )

 

 

在ASP.NET中读取数据绑定到TreeView实现代码:

ExpandedBlockStart.gif
<% @ Page Language = " C# "  AutoEventWireup = " true "   CodeFile = " Default.aspx.cs "  Inherits = " _Default "   %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
    
< title ></ title >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
        
< asp:TreeView  ID ="treeMenu"  runat ="server" >
        
</ asp:TreeView >
    
</ div >
    
</ form >
</ body >
</ html >

 

 

 using System;

using  System.Web.UI.WebControls;
using  System.Data;
using  System.Data.SqlClient;

public   partial   class  _Default : System.Web.UI.Page 
{
    
private   readonly   string  ConnString  =   @" server=.\MSSQLSERVER2008;database=chart;uid=sa;pwd=123456 " ;
    
private  DataTable dt  =   null ;
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if ( ! IsPostBack)
        {
            dt 
=   new  DataTable();
            GetMenuToDataTable(
" select * from sysMenuTree " ,dt);
            BindTree(dt,
null , " 0 " );
        }
    }

    
private   void  BindTree(DataTable dtSource,TreeNode parentNode, string  parentID)
    {
        DataRow[] rows 
=  dtSource.Select( string .Format( " ParentID={0} " ,parentID));
        
foreach (DataRow row  in  rows)
        {
            TreeNode node 
=   new  TreeNode();
            node.Text 
=  row[ " sText " ].ToString();
            node.Value 
=  row[ " sValue " ].ToString();
            BindTree(dtSource,node,row[
" NoteId " ].ToString());
            
if (parentNode  ==    null )
            {
                treeMenu.Nodes.Add(node);
            }
            
else
            {
                parentNode.ChildNodes.Add(node);
            }
        }
    }

    
private  DataTable GetMenuToDataTable( string  query,DataTable dt)
    {
        
using (SqlConnection conn  =   new  SqlConnection(ConnString))
        {
            SqlCommand cmd 
=   new  SqlCommand(query,conn);
            SqlDataAdapter ada 
=   new  SqlDataAdapter(cmd);
            ada.Fill(dt);
        }
        
return  dt;
    }
}

 

转载于:https://www.cnblogs.com/Ferry/archive/2010/12/14/1905283.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值