asp.net与读取数据显示Treeview_2006-08-09


    今天收获不错,还搞定了显示treeview控件的问题,连接到数据库取出数据显示成树。参考了网上一位兄弟的代码,不过他用了一套别的树组件,当时没反应过来,找我奇怪了,怎么找不到他代码中的对象,让我真想背一下.ent的命名空间。
    在他的代码有,有两种方式实现树,一种是使用递归,据说是效率低一些。另一种是使用堆栈,说效率高,所以呢我就选择堆栈来测试了,有兴趣的朋友可以试一下递归。比较一下,有什么消息么反馈啊。
    以下的用堆栈显示树的代码,对堆栈不是太了解,不知道它是谁调谁怎么弄出棵树了,知道的朋友告诉我一声呵。

//Example_AdoNetShowTreeview.aspx文件
//-----------------------------------------------------------------------------------------------------

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="Example_AdoNetShowTreeview.aspx.cs" Inherits="Example_Example_AdoNetShowTreeview"  %>

<! 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 ="TreeView1"  runat ="server"  ShowLines ="True" >
        
</ asp:TreeView >
        
< asp:Button  ID ="ButShowTree"  runat ="server"  OnClick ="ButShowTree_Click"  Text ="显示树"   />     
    
</ div >
    
</ form >
</ body >
</ html >

 


//Example_AdoNetShowTreeview.aspx.cs文件
//-----------------------------------------------------------------------------------------------------

using  System;
using  System.Data;
using  System.Data.SqlClient;
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;

public   partial   class  Example_Example_AdoNetShowTreeview : System.Web.UI.Page
{
    
//创建数据库连接对象
    public SqlConnection objMyconn = new SqlConnection();

    
protected void Page_Load(object sender, EventArgs e)
    
{
        
//设置连接字符串
        objMyconn.ConnectionString = "Pooling=true;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=DotNetExampleDB;Data Source=ZMJINNB";
        
//打开数据库
        objMyconn.Open();
    }

    
protected void ButShowTree_Click(object sender, EventArgs e)
    
{
        
//------------------------------------------------------------------------
        
//创建DataSet
        DataSet objMyds = new DataSet();
        
//创建数据代理DataAdapter
        SqlDataAdapter objMyadp = new SqlDataAdapter("Select FID,FNAME,FPARENT_ID from Event_Type", objMyconn);

        
//使用数据代码对象将数据填充到数据集对象中,并指定表的名名为:Event_Info
        objMyadp.Fill(objMyds, "Event_Info");

        DataTable dt 
= objMyds.Tables[0];

        
//树的根节点值
        string strTreeRootValue = "-1";


        
if (dt == null)
            
return;

        
//定义一个根节点
        TreeNode pnode;
        
//定义一个栈
        Stack plist = new Stack();

        
//------------------------------------------------------------------------
        
//树的根节点代码
        DataRow[] pdrs = dt.Select("FPARENT_ID='" + strTreeRootValue + "'");
        
if (pdrs != null)
        
{
            
foreach (DataRow dr in pdrs)
            
{
                pnode 
= new TreeNode();
                pnode.Value 
= dr["FID"].ToString();
                pnode.Text 
= dr["FNAME"].ToString();

                TreeView1.Nodes.Add(pnode);
                plist.Push(pnode);
            }

        }

        
//------------------------------------------------------------------------
        
//树的子节点代码
        while (true)
        
{
            
if (plist.Count == 0break;

            pnode 
= (TreeNode)(plist.Pop());

            DataRow[] drs 
= dt.Select("FPARENT_ID='" + pnode.Value + "'");
            
if (drs != null)
            
{
                
foreach (DataRow dr in drs)
                
{
                    TreeNode node 
= new TreeNode(dr["FNAME"].ToString(), dr["FID"].ToString());
                    pnode.ChildNodes.Add(node);
                    plist.Push(node);
                }

            }

        }

    }

}

 

//创建数据表代码(测试数据就自己搞定吧,呵呵)
//-----------------------------------------------------------------------------------------------------

if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[Event_Type] ' and   OBJECTPROPERTY (id, N ' IsUserTable ' =   1 )
drop   table   [ dbo ] . [ Event_Type ]
GO

CREATE   TABLE   [ dbo ] . [ Event_Type ]  (
 
[ FID ]   [ varchar ]  ( 32 ) COLLATE Chinese_PRC_CI_AS  NOT   NULL  ,
 
[ FCODE ]   [ varchar ]  ( 32 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
 
[ FNAME ]   [ varchar ]  ( 64 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
 
[ FUSE_ID ]   [ varchar ]  ( 32 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
 
[ FPARENT_ID ]   [ varchar ]  ( 32 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
 
[ FOrderID ]   [ float ]   NULL  ,
 
[ FREMARK ]   [ varchar ]  ( 256 ) COLLATE Chinese_PRC_CI_AS  NULL  
ON   [ PRIMARY ]
GO
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值