ASP网站制作之ASP初级进修:数据库静态天生树形目次
使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。1、目次树的普遍使用为了这段内容,在百度上搜了搜,内容一年夜通,相干的竟没有。搜甚么搜嘛?用途不是明摆着吗?资本办理器文件夹的办理,论坛中多级论坛的办理,JAVA中的AWT恰是缺少包含树形目次如许的组件才用途受限......谁这么没规矩,一点体面都不给,叫我怎样讲下往?清了清嗓子:在我们项目中经常会呈现自联系关系的数据表,从全体看往,全部表就出现为一个树形数据布局。当我们对这个表举行显现、编纂时,假如不接纳好的体现情势,会显得很愚笨,接纳树形目次举行办理明显是一个不错的主张。
(斧子抡了一圈,感到好极了,接着讲...)在WEB中树形目次能够用javascript完成,但一些细节成绩上比方树形目次传值(点击一个子节点,翻开相干链接),多级目次和节点的增添、删除、拖动上受各类制肘。实在接纳第三方控件明显也是个不错的主张。
2、关于智岛目次树控件
好,我们明天的仆人公--笨重尖锐的智岛目次树控件(下载地点:http://www.oapro.com/ostarocx/download/OTree.ocx)进场了。它接纳VC++6.0开辟,是尺度的OCX控件,能够使用于Windows情况下VB、VC、PB、Dephi、ASP、JSP等编程言语中。它接纳XML文件作为接口文件,该接口文件既能够是一个现成的文件,也能够是静态天生的XML格局文件(换句话说能够基于数据库静态天生目次树节点)。智岛目次树控件撑持节点的复制、挪动、重定名和权限控件,而且没有对目次的层数举行限定。先容了这么多,想必欲欲越试了。在ASP中小试牛刀先:
3、注册增加控件
1.注册智岛目次树控件
下载(下载地点:http://www.oapro.com/ostarocx/download/OTree.ocx)智岛目次树控件(其文件名为OTree.ocx)后,依照以下办法注册控件:
点击“入手下手”→“运转”;在运转对话框中输出以下命令:
regsvr32 <OTree.ocx文件的相对路径> 注册智岛目次树控件控件
regsvr32/u<OTree.ocx文件的相对路径>排除智岛目次树控件的注册
2.在页面中增加智岛目次树控件
在页面中到场以下代码,便可拔出智岛目次树控件:
<objectclassid="clsid:D835ED15-0BD0-4F24-AC76-A60175AE1137"id="OTree"width="150"height="0"
CODEBASE="http://www.oapro.com/ostarocx/download/OTree.ocx">
<paramname="_Version"value="65536">
<paramname="_ExtentX"value="2646">
<paramname="_ExtentY"value="1323">
<paramname="_StockProps"value="0">
</object>
个中:
width和height:控告件的显现宽度和高度;
id:控告件工具的称号,经由过程该称号完成对控件的操纵;
CODEBASE:指没有安装智岛目次树控件的客户端运转该页面时主动下载安装该控件的地点。
3、从XML文件天生树形目次
1.XML文档格局
XML是个好东东,不外也要切合必定的格局呀,否则控件可不认哦!上面是一份XML文档格局:
<?xmlversion="1.0"encoding="GB2312"?>
<NaviTree>
<NodeItem>
<NodeName></NodeName><!--节点称号-->
<NodeType></NodeType><!--节点范例-->
<NodeData></NodeData><!--节点数据-->
<ImageIndex></ImageIndex><!--节点图片-->
<Creator></Creator><!--天生者-->
<RightDepartmen>|开辟部|</RightDepartmen><!--对此目次有权的部门-->
<RightUser></RightUser><!--对此目次有权的用户-->
<Lock></Lock><!--是不是锁定0/1-->
</NodeItem>
...
</NaviTree>
个中:
NodeName:指节点称号,若有下级节点,要包含下级节点称号,节点称号间以标记""分开。例“我的办公桌通告关照电子邮件”标明根节点为“我的办公桌”,父节点为“通告关照”,本节点为“电子邮件”。假如问你包括五级的节点称号是如何时,呵呵,不要拿西红柿扔我!
NodeType:节点范例,一样平常均指“href”。
ImageIndex:节点称号前显现的小图标,个中0暗示文件夹状图标,4暗示数据表状图标。
上面是一份xml格局文档源码:
<?xmlversion="1.0"encoding="GB2312"?>
<NaviTree>
<NodeItem>
<NodeName>我的办公桌</NodeName><!--节点称号-->
<NodeType>href</NodeType><!--节点范例-->
<NodeData>MyDesk.aps</NodeData><!--节点数据-->
<Lock>0</Lock><!--是不是锁定0/1-->
<ImageIndex>0</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌通告关照</NodeName><!--节点称号-->
<NodeType>href</NodeType><!--节点范例-->
<NodeData>通告关照.aps</NodeData><!--节点数据-->
<Lock>0</Lock><!--是不是锁定0/1-->
<ImageIndex>0</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌通告关照电子邮件</NodeName><!--节点称号-->
<ImageIndex>0</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌通告关照电子邮件收件箱</NodeName><!--节点称号-->
<ImageIndex>4</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌通告关照电子邮件发件箱</NodeName><!--节点称号-->
<ImageIndex>4</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌通告关照电子邮件已发邮件</NodeName><!--节点称号-->
</NodeItem>
<NodeItem>
<NodeName>我的办公桌日程布置</NodeName><!--节点称号-->
<ImageIndex>0</ImageIndex>
</NodeItem>
<NodeItem>
<NodeName>我的办公桌日程布置日历</NodeName><!--节点称号-->
</NodeItem>
</NaviTree>
2.代码完成
经由过程以下语句关照智岛目次树控件翻开XML文档:
OTree.OpenXMLFile("")
个中引号内XML文档的相对路径,比方:
OTree.OpenXMLFile("C:OTree.xml")
运转效果见下图:
已瞥见你一再摇头的模样,但又自言自语:假如要依据数据库中内容天生树形目次该...?呵呵,上面我们就进进正题(敢情后面这么多笔墨是骗稿费的啊?谁?嘘...,小声点,万万别让小编闻声):
4、基于数据库天生树形目次
1.XML文档格局
将树形目次的节点存进数据库,为我们静态构成树形目次打下优秀的基本。固然,也有些目次树是体现一个数据库中的数据布局(父节点是数据库名,子节点是数据表)。不论怎样,有了后面的基本,如今我们所需做的只是将数据库的内容构成下面格局的XML文档。上面有一份ASP源码,将数据库中布局构成XML文档,个中变量datasource存储传送过去的数据库称号。
<?xmlversion="1.0"encoding="GB2312"?>
<NaviTree>
<%
dimdatasource
datasource=request("datasource")
%>
<NodeItem>
<NodeName><%=datasource%>
<NodeType></NodeType>
<NodeData></NodeData>
<ImageIndex>0</ImageIndex>
<Creator></Creator>
<RightDepartmen>|开辟部|市场部|</RightDepartmen>
<RightUser></RightUser>
<Lock>0</Lock>
</NodeItem>
<%
strConn="DBQ="+server.mappath("db"&datasource)+";DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"
setobjConn=server.createobject("Adodb.connection")
objConn.openstrConn
setrsSchema=objConn.openSchema(20)
rsSchema.movefirst
DoUntilrsSchema.EOF
ifrsSchema("TABLE_TYPE")="TABLE"then
%>
<NodeItem>
<NodeName><%=datasource%><%=rsSchema("Table_Name")%></NodeName>
<NodeType>href</NodeType>
<NodeData><%=rsSchema("Table_Name")%></NodeData>
<ImageIndex>4</ImageIndex>
<Creator></Creator>
<RightDepartmen>|开辟部|市场部|</RightDepartmen>
<RightUser></RightUser>
<Lock>0</Lock>
</NodeItem>
<%
endif
rsSchema.movenext
Loop
setobjConn=nothing
%>
</NaviTree>
2.代码完成
这时候候的接口办法跟间接翻开XML文档的纷歧样了:
OTree.SetNodeXML(OTree.HttpGet("http://www.oapro.com/ostarocx/sample/Dataman/OTree.asp","datasource=OTree.mdb"))
个中办法HttpGet有二个参数,第一个参数为我们下面先容的完成数据库转换XML格局的网页地点,必定要为网址格局,不克不及用绝对或相对路径(由于今朝该办法尚不撑持),第二个参数为传送到该文件的参数,这里我们传送的是数据库称号。
依照下面的先容你很快的完成了一个树形目次,点根节点,睁开,点父节点,睁开,再点...,咦,怎样没反响?你但愿有甚么反响?噢,欠好意义,差点忘先容了:
5、呼应节点事务
智岛树形目次控件供应了一个接口办法用以呼应节点事务:
EventTreeSelchanged(strItemName,strItemData,strItemType)
个中:
strItemName节点称号
strItemData节点数据
strItemType节点范例
这三个参数由智岛树形目次控件供应给我们开辟者,供我们挪用。
我们可经由过程剧本完成对事务的触发,以下是一典范代码:
<SCRIPTFOR="OTree"EVENT="EventTreeSelchanged(strItemName,strItemData,strItemType)"LANGUAGE="javascript">
alert(strItemName);
</SCRIPT>
以上代码完成了点击节点时,弹出一对话框显现该节点的称号。
6、典范
嗯,好累呀!用敲键盘敲得差点变形的小手揉揉看屏幕看得发酸的年夜眼睛,又闪过一个动机,再给出一个典范吧:http://www.oapro.com/ostarocx/sample/ogrid_f。在这个典范中,从下拉框当选择数据库称号后树形目次的内容会产生变更,点击节点会显现该节点所代表的数据表中的数据内容。全部典范充实展现了下面文章内容的手艺细节。上面是典范截图:
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
页:
[1]