转:ASP.NET2.0 TreeView的数据库绑定

<% @ 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 >
< style  type ="text/css" >
<!--
body,td,th 
{
    font-family
:  宋体 ;
    font-size
:  9pt ;
}
body 
{
    margin-left
:  0px ;
    margin-top
:  0px ;
    margin-right
:  0px ;
    margin-bottom
:  0px ;
}
-->
</ style >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
    
< asp:TreeView  ID ="TreeView1"  runat ="server"  Width ="100%"   />
  
</ div >
    
</ form >
</ body >
</ html >

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  _Default : System.Web.UI.Page
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
if  ( ! IsPostBack)
        {
            TreeViewBind();
        }
    }
    主从表绑定
#region  主从表绑定
    
private   void  TreeViewBind()
    {
        DataSet dst 
=  GetTreeViewData();
        
foreach  (DataRow masterRow  in  dst.Tables[ " sProBigName " ].Rows)
        {
            TreeNode masterNode 
=   new  TreeNode(( string )masterRow[ " sProBigName " ]);
            TreeView1.Nodes.Add(masterNode);
            
foreach  (DataRow childRow  in  masterRow.GetChildRows( " child " ))
            {
                TreeNode childNode 
=   new  TreeNode(( string )childRow[ " sProSmallSortName " ]);
                masterNode.Expanded 
=   false ;
                masterNode.ChildNodes.Add(childNode);
            }
        }
    }

    
private  DataSet GetTreeViewData()
    {
        SqlConnection Conn 
=   new  SqlConnection(System.Configuration.ConfigurationManager.AppSettings[ " ConnectionSqlServer " ].ToString());
        SqlDataAdapter BigSort 
=   new  SqlDataAdapter( " select * from [Yp_ProBigSort] " , Conn);
        SqlDataAdapter SmallSort 
=   new  SqlDataAdapter( " select * from [Yp_ProSmallSort] " , Conn);
        DataSet ds 
=   new  DataSet();
        BigSort.Fill(ds, 
" sProBigName " );
        SmallSort.Fill(ds, 
" sProSmallSortName " );
        ds.Relations.Add(
" child " , ds.Tables[ " sProBigName " ].Columns[ " iProBigSort_ID " ], ds.Tables[ " sProSmallSortName " ].Columns[ " iProBigSortID " ]);
        
return  ds;       
    }
    
#endregion
}



Yp_ProBigSort表
数据结构:
iProBigSort_ID(父表主键)
sProBigName(根节点名称)

iProBigSort_ID      sProBigName
1                              普通内科
2                              普通外科
3                              妇产科

Yp_ProSmallSort表
iProSmallSort_ID(子表主键)
iProBigSortID(父表主键)
sProSmallSortName(子节点名称)

iProSmallSort_ID       iProBigSortID       sProSmallSortName
1                                         1                                 感冒
2                                         1                                 发烧
3                                         2                                 普通外科1
4                                         2                                 普通外科2
5                                         3                                 妇产科1
6                                         3                                 妇产科2





-----------------------------------------------

TreeView的数据绑定资源默认的有两类:XML和SiteMap 

这两类资源的共同特点就是资源文件是固定保存在项目中的,这一类方便我们使用来做菜单,所以TreeView归类在导航控件中.这里的绑定我不做详细的叙述,VS2005中可以很方便的使用.

TreeView还有一种用法是用来显示数据信息及其数据信息的层级信息,这里上面的两类就不能满足我们的需要,我们需要的是与数据库资源连接,而形成动态的TreeView.同样我们还可以在数据库中使用树的双亲表示法把树描述出来,例如

IDNameParentID
110
220
330
441
551
662
772
883
997

使用这种的数据库方法可以很方便的绑定到TreeView中,形成一个无限动态树.(当然还有其他的数据库的方法)

private   void  InitTree(TreeNodeCollection Nds,  string  ParentId)
    
{
        DataView dvroles 
= new DataView();
        TreeNode tmpNd;
        
        
string strRID;
        dvroles.Table 
= csa.CreateDataSet("DS1").Tables["T1"];//DataSet的DataTable表中
        dvroles.RowFilter = " ParentID=" + ParentId;
        
foreach (DataRowView drvrole in dvroles)
        
{
            strRID 
= drvrole["ID"].ToString();
            tmpNd 
= new TreeNode();
            tmpNd.Value 
= drvrole["ID"].ToString();
            tmpNd.Text 
= drvrole["Name"].ToString();
            tmpNd.Target 
= drvrole["ParenID"].ToString();
            Nds.Add(tmpNd);
            InitRoleTree(tmpNd.ChildNodes, strRID);
        }

    }

在这里我们可以进行控制的树的信息有

Value节点的ID
Text 节点的显示信息
Target关联网页内容的目标窗口,如果没有关联网页,也可以做一个数据容器
ToolTip节点文本提示工具
ImageUrl 节点图片
ImageToolTip节点图片文本提示工具
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值