ASP网页设计树型布局在ASP中的复杂办理
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的办理|树型布局树型布局在我们使用程序中仍是很罕见的,好比文件目次,BBS,权限设置,部门设置等。这些数据信息都接纳条理型布局,而在我们如今的干系型数据库中很难清淅表达。那末要在程序中碰到树型
布局成绩该怎样处置呢?
比来笔者经由过程一个ASP权限办理的程序轻松办理了一这成绩,如今将其收拾出来以飨读者。
起首,要将条理型数据模子转化为干系型数据模子。也就是说怎样在我们的ACCESS,SQLSERVER
,ORACLE等干系型数据库中计划这个数据布局。
拿个实例来说吧,比如上面一个数据:
文档办理1
|----新建文档2
|----文档修正3
|----文档回档4
||----检察回档信息5
||----删除回档信息6
|||----删除汗青文档7
|||----删除正式文档8
|----体系办理9
|----用户办理10
人事办理11
行政办理12
财政办理13
这是一个很典范的条理型布局数据,那末人人想想,怎样将其经由过程二维表的情势来表达呢?初
看上往很难,是吧。但是细心斟酌一番仍是有路径可钻的。
能够如许,将下面一切的权限视为一个权限字段,那末这个权限字段一定是要有一个ID值的。我
们再给这个干系型数据表再强行加一个字段――从属ID字段,也就是标明这个权限是属于哪一级权限
之下的,即这个ID值从属于哪个ID值。好比:“检察回档信息”权限ID值为“5”,它是从属于“文
档回档”权限之下的,那末它的从属ID字段的值就应当是“4”。OK,假如这一点能了解的话,那末我
们的干系转化事情也就算基础完成了。
上面我们就入手下手计划这张干系型数据表(以SqlServer7.0为例):
+-----------+-----------+-----------+-----------+----------+
| 字段名|字段寄义| 字段范例|字段巨细|字段属性|
+-----------+-----------+-----------+-----------+----------+
|SelfID|权限ID|Int|4|PK|
|PowerName|权限名 |Varchar|50|NotNull|
|PowerInfo|权限信息|Varchar|500||
|BelongID|从属ID|Int|4||
+-----------+-----------+-----------+-----------+----------+
好了,布局计划好你就能够轻松输出你的测试数据了。
然后,我们就针对怎样在网页中仿照条理布局显现这功效的ASP程序,这也是最关头的一步了。
程序清单:powerlist.asp
<%
数据库毗连
setconn=Server.CreateObject("ADODB.Connection")
conn.open"driver={SQLServer};server=chaiwei;DATABASE=chaiwei;UID=sa;PWD="
翻开一切父层数据
setrs=Server.CreateObject("ADODB.Recordset")
rs.Open"select*frompowerswherebelongidisnullorderbypowerid",conn,1,3
条理数亮相变量赋初值
format_i=1
列表主程序段
dowhilenotrs.eof
打印父层数据信息
response.write"<ahref=powerlist.asp?SelfID="&rs("powerid")&"&BelongID="&rs("belongid")&">"&rs("powername")&"</a>"
response.write"<br>"
子程序挪用,子层数据处置
CallListSubPower(rs("powerid"))
rs.movenext
loop
封闭父层数据集
rs.close
setrs=nothing
子层数据处置子程序
SubListSubPower(id)
翻开从属于下层powerid的一切子层数据信息
setrs_sub=Server.CreateObject("ADODB.Recordset")
rs_sub.Open"select*frompowerswherebelongid="&id&"orderbypowerid",conn,1,3
列子层数据
dowhilenotrs_sub.eof
条理数亮相变量递进累加
format_i=format_i+1
轮回缩进格局把持,由于顶层与二层不必要缩进,以是从第三层入手下手援用此程序段
fori=format_ito3step-1
response.write"|"
response.write""
next
打印子层数据信息
response.write"|----"
response.write"<ahref=powerlist.asp?SelfID="&rs_sub("powerid")&"&BelongID="&rs_sub("belongid")&">"&rs_sub("powername")&"</a>"
response.write"<br>"
递回挪用子程序自己,对子层数据举行渐渐处置
ListSubPower(rs_sub("powerid"))
rs_sub.movenext
loop
条理数亮相变量递退累减
format_i=format_i-1
封闭子层数据集
rs_sub.close
setrs_sub=nothing
EndSub
%>
powerlist.asp程序中,我们先翻开顶层数据,在轮回中显现出来;然后又计划一个子程序ListSubPower,经由过程递回算法在轮回中挪用,以此来翻开子层数据信息,而且在子程序外部轮回中又重复挪用本人,以此来逐层睁开深层数据。
别的,在程序中还用了一个静态变量format_i来把持缩进显现格局。
本文就树型布局在数据计划、程序把持方面做复杂实验,目标在于举一反三,但愿读者经由过程本文失掉更多启发。
</p>想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的 多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助... Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题: 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]