欢迎光临
我们一直在努力

NET平台下Web树形结构程序设计-.NET教程,算法/线程

建站超值云服务器,限时71元/月

.net平台下web树形结构程序设计

我的上篇文章《树形结构在开发中的应用》主要是在windows form下的实现,下面是web form下的实现。

数据库设计

首先,我们在sql server 2000里建立一个表tbtree,表的结构设计如下:

列名 数据类型 描述 长度 主键

id int 节点编号 4 是

parentid int 父节点编号 4

context nvarchar 我们要显示的节点内容 50

在sql server 2000中建表的脚本:

create table [dbo].[tbtree] (

[id] [int] identity (1, 1) not null ,

[context] [nvarchar] (50) collate chinese_prc_ci_as null ,

[parentid] [int] null

) on [primary]

在表中添加如下记录:

set identity_insert tbtree on

insert tbtree (id,context,parentid) values ( 1,中国,0)

insert tbtree (id,context,parentid) values ( 2,北京,1)

insert tbtree (id,context,parentid) values ( 3,天津,1)

insert tbtree (id,context,parentid) values ( 4,河北省,1)

insert tbtree (id,context,parentid) values ( 5,广东省,1)

insert tbtree (id,context,parentid) values ( 6,广州,5)

insert tbtree (id,context,parentid) values ( 7,四川省,1)

insert tbtree (id,context,parentid) values ( 8,成都,7)

insert tbtree (id,context,parentid) values ( 9,深圳,5)

insert tbtree (id,context,parentid) values ( 10,石家庄,4)

insert tbtree (id,context,parentid) values ( 11,辽宁省,1)

insert tbtree (id,context,parentid) values ( 12,大连,11)

insert tbtree (id,context,parentid) values ( 13,上海,1)

insert tbtree (id,context,parentid) values ( 14,天河软件园,6)

insert tbtree (id,context,parentid) values ( 15,汕头,5)

set identity_insert tbtree off

下载treeview控件地址

http://msdn.microsoft.com/downloads/samples/internet/asp_dot_net_servercontrols/webcontrols/default.asp

安装后,通过“自定义工具箱”->“.net框架组件”把treeview添加到工具箱里。

新建一个项目,选择visual basic.net 工程asp.net web应用程序,在页面上拖画一个treeview控件。

html页:

<%@ register tagprefix="iewc" namespace="microsoft.web.ui.webcontrols" assembly="microsoft.web.ui.webcontrols, version=1.0.2.226, culture=neutral, publickeytoken=31bf3856ad364e35" %>

<%@ page language="vb" autoeventwireup="false" codebehind="webform1.aspx.vb" inherits="tree.webform1"%>

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

<title>webform1</title>

<meta name="generator" content="microsoft visual studio .net 7.0">

<meta name="code_language" content="visual basic 7.0">

<meta name="vs_defaultclientscript" content="javascript">

<meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">

</head>

<body ms_positioning="gridlayout">

<form id="form1" method="post" runat="server">

<font face="宋体">

<iewc:treeview id="treeview1" style="z-index: 101; left: 39px; top: 68px" runat="server"></iewc:treeview></font>

</form>

</body>

</html>

后台代码:

private sub page_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load

dim ds as new dataset()

dim cn as new sqlconnection()

try

初始化连接字符串

cn.connectionstring = "data source=pmserver;initial catalog=benchmark;persist security info=false;user id=sa;password=sa;"

cn.open()

dim adp as sqldataadapter = new sqldataadapter("select * from tbtree", cn)

adp.fill(ds)

me.viewstate("ds") = ds

catch ex as exception

#if debug then

session("error") = ex.tostring()

response.redirect("error.aspx") &#768;跳转程序的公共错误处理页面

#end if

finally

关闭连接

cn.close()

end try

调用递归函数,完成树形结构的生成

addtree(0, nothing)

end sub

递归添加树的节点

private sub addtree(byval parentid as integer, byval pnode as treenode)

dim ds as dataset

ds = me.viewstate("ds")

dim dvtree as new dataview()

dvtree = new dataview(ds.tables(0))

过滤parentid,得到当前的所有子节点

dvtree.rowfilter = "parentid = " + parentid.tostring

dim row as datarowview

for each row in dvtree

dim node as new treenode()

if pnode is nothing then 判断是否根节点

添加根节点

node.text = row("context").tostring()

treeview1.nodes.add(node)

node.expanded = true

再次递归

addtree(int32.parse(row("id").tostring()), node)

else

&#768;添加当前节点的子节点

node.text = row("context").tostring()

pnode.nodes.add(node)

node.expanded = true

再次递归

addtree(int32.parse(row("id").tostring()), node)

end if

next

end sub

c#版本:

using system;

using system.collections;

using system.componentmodel;

using system.data;

using system.drawing;

using system.web;

using system.web.sessionstate;

using system.web.ui;

using system.web.ui.webcontrols;

using system.web.ui.htmlcontrols;

using microsoft.web.ui.webcontrols;

using system.data.sqlclient;

namespace treecs

{

/// <summary>

/// webform1 的摘要说明

/// </summary>

public class webform1 : system.web.ui.page

{

protected microsoft.web.ui.webcontrols.treeview treeview1;

private void page_load(object sender, system.eventargs e)

{

// 定义数据库连接

sqlconnection cn = new sqlconnection();

try

{

//初始化连接字符串

cn.connectionstring= "data source=pmserver;initial catalog=benchmark;persist security info=false;user id=sa;password=sa;";

cn.open();

sqldataadapter adp = new sqldataadapter("select * from tbtree",cn);

dataset ds=new dataset();

adp.fill(ds);

this.viewstate["ds"]=ds;

}

catch (exception ex)

{

session["error"] = ex.tostring();

response.redirect("error.aspx"); //&#768;跳转程序的公共错误处理页面

}

finally

{

cn.close();

}

//调用递归函数,完成树形结构的生成

addtree(0, (treenode)null);

}

//递归添加树的节点

public void addtree(int parentid,treenode pnode)

{

dataset ds=(dataset) this.viewstate["ds"];

dataview dvtree = new dataview(ds.tables[0]);

//过滤parentid,得到当前的所有子节点

dvtree.rowfilter = "[parentid] = " + parentid;

foreach(datarowview row in dvtree)

{

treenode node=new treenode() ;

if(pnode == null)

{ //添加根节点

node.text = row["context"].tostring();

treeview1.nodes.add(node);

node.expanded=true;

addtree(int32.parse(row["id"].tostring()), node); //再次递归

}

else

{ //&#768;添加当前节点的子节点

node.text = row["context"].tostring();

pnode.nodes.add(node);

node.expanded = true;

addtree(int32.parse(row["id"].tostring()),node); //再次递归

}

}

}

#region web form designer generated code

override protected void oninit(eventargs e)

{

//

// codegen该调用是 asp.net web 窗体设计器所必需的。

//

initializecomponent();

base.oninit(e);

}

/// <summary>

///设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容

/// </summary>

private void initializecomponent()

{

this.load += new system.eventhandler(this.page_load);

}

#endregion

}

}

后记:请读者自行修改程序中的连接字符串设置。

声明:本文版权与解释权归李洪根所有,如需转载,请保留完整的内容及此声明。

qq: 21177563

msn: lihonggen@hotmail.com

专栏:http://www.csdn.net/develop/author/netauthor/lihonggen0/

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » NET平台下Web树形结构程序设计-.NET教程,算法/线程
分享到: 更多 (0)