您的位置:首页 > 编程语言 > ASP

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

2006-08-10 09:40 471 查看
    今天收获不错,还搞定了显示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 == 0) break;




            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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息