大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> .NET平台下Web树形结构程序设计

.NET平台下Web树形结构程序设计

时间: 2021-07-31 作者:daque

我的上篇作品《树形构造在开拓中的运用》主假如在windows form下的实行,底下讲一下web form下的实行。概括treeview是一个要害的控件,不管是在vb.net,c# 仍旧vb、delphi等百般谈话中,都充任了导航器的效率。在本质处事中,很多情景下须要将treeview与数据库举行贯穿,以弥补其节点。在windows form和web form中,咱们不妨用treeview来表露树形构造,如表露目次树、表露地域、分门别类表露商品等。不妨说,在大局部软硬件的开拓中,treeview都是一个不行缺乏的展现控件。所以,树形构造的安排就成了软硬件开拓职员一个长久的话题。树形构造的展现办法树形构造的展现普遍来讲有三种办法:1.界面安排时在treeview安排器大概代码市直接弥补treeview控件。2.从xml文献中创造树形构造。3.从数据库中获得数据,创造树形构造。第一种办法是最大略的,这种办法重要用来树形构造普遍没有变革的运用步调,在安排时就恒定一颗树。固然,在安排时恒定了树的构造,此后要想窜改、减少、简略树的节点,就必需窜改源步调。一切倒霉于扩充。第二种办法从xml文献中索取,因为xml自己即是树形构造的,微软供给的文书档案东西模子dom 不妨简单的读取、操纵和窜改 xml 文书档案。在.net中,运用system.xml类不妨简单地将xml文献加载到treeview控件中,微软的msdn也供给了范例,此处就不复多说。第三种办法,树形构造的数据,从数据库中赢得。普遍来讲,咱们的运用步调普遍是鉴于数据库的。沿用这种办法,减少、窜改、简略一颗树的节点很简单,只有操纵数据库中的数据就不妨了。并且,这种办法不妨和数据库中的其它表做关系、查问和汇总,经过安排视图或保存进程,很简单查问出你想要的关系数据。底下,咱们重要计划这种办法的安排和实行。数据库安排开始,咱们在sql server 2000里创造一个表tbtree,表的构造安排如次:列名数据典型刻画长度主键idint节点编号4是parentidint父节点编号4contextnvarchar咱们要表露的节点实质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 oninsert tbtree (id,context,parentid) values ( 1,'华夏',0)insert tbtree (id,context,parentid) values ( 2,'北京',11)insert tbtree (id,context,parentid) values ( 3,'天津',11)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载入地方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") '?跳转步调的大众缺点处置页面#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 '?增添暂时节点的子节点 node.text = row("context").tostring() pnode.nodes.add(node) node.expanded = true '再次递归 addtree(int32.parse(row("id").tostring()), node) end if next end subc#本子: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{/// /// webform1 的纲要证明/// 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"); //?跳转步调的大众缺点处置页面}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 { //?增添暂时节点的子节点node.text = row["context"].tostring();pnode.nodes.add(node);node.expanded = true;addtree(int32.parse(row["id"].tostring()),node); //再次递归}} } #region web form designer generated codeoverride 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}}跋文:请读者群自行窜改步调中的贯穿字符串树立。附:关系微软msdn文书档案,囊括在vb6和.net中从xml创造树形构造 http://support.microsoft.com/default.aspx?kbid=311318http://support.microsoft.com/default.aspx?kbid=308063http://support.microsoft.com/default.aspx?kbid=317597http://support.microsoft.com/default.aspx?k

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.