仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 423|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之用asp+javascript完成静态数据联动,不...

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。javascript|静态|数据|革新/////////////byxxrl(孔曰成仁,孟曰取E)

/////////////Chinese:蒋健华

/////////////email:jjh_115@eyou.com

联动,联动,联动。。。。困扰了很多多少网友的神经,在CSDN-ASP板块中,老是看到网友们大叫拯救,救甚么?联动!为何联动如许遭到存眷,实在用性情有可原,用户也能承认,但是假如数据是大批并互相联系关系的,那成绩就来了,怎样辨认并显现是一个很忧?的成绩。那事实有无一个很好的办理举措呢?谜底是一定的,由于我们有asp和javascript,哈哈,那末我们就入手下手举动吧!

我们要取得的数据,既然要到达联动的效果,一定这些数据是有联系关系的,那末我们用如许的实例来讲明我们的办法

筹办前提:

SQLSERVER2000中文企业版,IIS5.0+,IE5.0+,固然,最好有一个好的编纂器,VS.NET就不错,固然,假如你是记事本的反对者,那我也没举措。L

我们以人事办理中的部门级别举行联动办法的申明,熟悉办理中的部门级别能够如许界说,也是实践企业的界说划定规矩,**化工场/**体系/**部,举例申明就是

××化工场/营销体系/市场部,在文中,FirstOrganization表对应的是”××化工场”,SecondOrganization对应的是”营销体系”,ThirdOrganization对应的是”市场部”



在SQLSERVER2000中新建两个表,大概三个表,为了我们能更年夜限制的发扬联动的功效,我们建三个表,呵呵。

数据库称号:xxrl_STUDY,用户名xxrl_STUDY,暗码xxrl_STUDY

接着建ODBC数据源,你也能够不必,但我如许用,呵呵

ODBC名:xxrl_ODBC,用用户名xxrl_STUDY,暗码xxrl_STUDY毗连,指向xxrl_STUDY数据库,默许中文设置,测试DD>ok

新建表:

第一个表FirstOrganization

SQL剧本以下:

ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[FirstOrganization])andOBJECTPROPERTY(id,NIsUserTable)=1)

droptable[dbo].[FirstOrganization]

GO



CREATETABLE[dbo].[FirstOrganization](

[id][int]IDENTITY(1,1)NOTNULL,

[OrganizationName][varchar](100)COLLATEChinese_PRC_CI_ASNOTNULL,

[Description][varchar](8000)COLLATEChinese_PRC_CI_ASNULL

)ON[PRIMARY]

GO

第二个表SecondOrganization

SQL剧本以下:

ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[SecondOrganization])andOBJECTPROPERTY(id,NIsUserTable)=1)

droptable[dbo].[SecondOrganization]

GO



CREATETABLE[dbo].[SecondOrganization](

[id][int]IDENTITY(1,1)NOTNULL,

[parentID][int]NOTNULL,

[OrganizationName][varchar](100)COLLATEChinese_PRC_CI_ASNOTNULL,

[Description][varchar](8000)COLLATEChinese_PRC_CI_ASNULL,

[OrderNumber][int]NULL

)ON[PRIMARY]

GO



第三个表ThirdOrganization

SQL剧本以下:

ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[ThirdOrganization])andOBJECTPROPERTY(id,NIsUserTable)=1)

droptable[dbo].[ThirdOrganization]

GO



CREATETABLE[dbo].[ThirdOrganization](

[id][int]IDENTITY(1,1)NOTNULL,

[parentID][int]NOTNULL,

[OrganizationName][varchar](100)COLLATEChinese_PRC_CI_ASNOTNULL,

[Description][varchar](8000)COLLATEChinese_PRC_CI_ASNULL,

[OrderNumber][int]NULL

)ON[PRIMARY]

GO



Ok,ODBC,我们建好了,数据库也建好了,至于站点的设置,我想人人都应当晓得的,这里不再报告。这里我的站点IP是http://200.100.100.88(外部收集IP)

终究入手下手写程序喽,好累,噗哧,噗哧,刚帮我同事搬器材,歇一会儿,coffee-ing……….

好的,为了便利IIS他白叟家,我们也懒得敲过剩的字母,我们是伶俐的,不勤奋的程序员,原本程序员就已够累的了,还不便利我们本人?嘿嘿,赞成者拍手,啪啪啪啪,faint,哪来的鞭炮?啥家的小孩也欠好好管管。。。。。。。。。J

新建default.asp文件,我们在写以下程序,

创建数据库毗连工具,

setobjconn=server.CreateObject("adodb.connection")

objconn.Open"xxrl_ODBC","xxrl_STUDY","xxrl_STUDY"

然后翻开我们要举行操纵的3个数据集

dimsql1,sql2,sql3

sql1="select*fromFirstOrganization"

sql2="select*fromSecondOrganization"

sql3="select*fromThirdOrganization"

‘/////////////////////////翻开第一构造库

setrs1=server.CreateObject("adodb.recordset")

rs1.Opensql1,objconn,1,1



setrs2=server.CreateObject("adodb.recordset")

rs2.Opensql2,objconn,1,1



setrs3=server.CreateObject("adodb.recordset")

rs3.Opensql3,objconn,1,1



建一个SELECT范例的HTTP控件,包括在form表单中以下:

‘////////////////////控件的初始值是从FirstOrganization中读取的,FirstOrganization在本例子中只要一个数据就是××化工场代码以下:

<formname=form1style="margin:0;"method="post">

<selectname=FirstOrganization>

<%

ifrs1.RecordCount>0then

Response.Write"<optionvalue="&rs1(“id”)&”>”&rs1("OrganizationName")&"</option>"

Else

Response.Write"没有设置"

endif

%>

</select>

</form>

好,这就是我们的联动功效的头

上面我们要创建第二个select控件了,第二个select控件中,我们用到了onchange函数,关于这个函数的具体注释,请看MSDN。代码以下(包括在form中):

<selectname=SecondOrganizationonchange=”ChangeLocationi(form1.SecondOrganization.options[form1.SecondOrganization.selectedIndex].value);”>

<optionvalue=””>-------------</option>

<%

ifrs2.RecordCount<0then

response.write“<optionvalue=””””>库中没有部门!</option>”

else

whilenotrs2.eof

response.write“<optionvalue=”&rs2(“id”)&”>”&rs2(“OrganizationName”)&”</option>”

rs2.movenext

wend

endif

%>

</select>

OK,第二个也弄定,上面我们来创建第三个SELECT一样放在form表单里,以下:

<selectname=ThirdOrganization>

</select>

不要健忘关数据集噢,

rs1.close

setrs1=nothing

rs2.close

setrs2=nothing

rs3.close

setrs3=nothing

ok,页面元素全体筹办停当,上面入手下手我们真实的联动之旅。

本例子接纳ASP和JAVASCRIPT交互的办法取数据库中的数据,因为我们在form表单前我们新建script剧本快,因为要交互,以是我们要这么写才干很好的交互

<%=”<scriptlanguage=javascript>”%>

</script>

然后我们就能够在script块中誊写我们的程序了。

我们的基础操纵是依据二级下拉中得出三级下拉,二级我们都从数据库中掏出来了,上面我们要取三级构造的数据了,以下

<%=”<scriptlanguage=javascript>”%>

<%’asp块

dimsql_GetThirdOrganization

sql_GetThirdOrganization="select*fromThirdOrganizationorderbyiddesc"

setrs_GetThirdOrganization=server.CreateObject("adodb.recordset")rs_GetThirdOrganization.Opensql_GetThirdOrganization,objconn,1,1

%>

vartemp,temp_2;//////////////javascript块

temp=0;///////////////////for轮回变量初始化

Related=newArray();//////////////////////数组,用来寄存三级构造的id,称号,和对应的父ID

<%

temp_2=0‘一个一时变量,用来寄存三级构造的个数

whilenotrs_GetThirdOrganization.eof‘轮回第三级构造

%>

////////////三维分离对应的第三级构造的ID,第三级构造的称号

////////////第三级别构造的父ID(即第二级别ID)

Related[<%=temp_2%>]=newArray("<%=rs_GetThirdOrganization(“id”)%>","<%=rs_GetThirdOrganization(“OrganizationName”)%>","<%=rs_GetThirdOrganization(“parentID”)%>");

<%

temp_2=temp_2+1

rs_GetThirdOrganization.movenext

wend

%>

temp=<%=temp_2%>;

functionChangeLocation(id){////

varid=id;承受二级菜单的选择的item的索引值

document.form1.ThirdOrganization.length=0;//初始化第三级菜单的长度,下标从0入手下手

vari=0;

/////////////////初始化第三级菜单的text和value属性的值,第一个参数值是text”--------”,二是////////value空值

document.form1.ThirdOrganization.options[0]=newOption(-------,);

////////////轮回数组,用数组的第三维数(父ID)和函数传过去的数举行对照

for(i=0;i<temp;i++){

if(Related[i][2]==id){/////////假如相称,证实在第三级内里有输出第二级构造的子集

///////////////////并将子集(第三级)的值赋给第三个select,

document.form1.ThirdOrganization.options[document.form1.ThirdOrganization.length]=newOption(Related[i][1],Related[i][0]);

}

}

}

</script>

最初在页面的最初可不要忘了增加objconn.close噢,呵呵

下面先容的器材,次要是依据选择第二个select来联动第三个select,那末假如我们在第三个select控件处如许再界说一个函数以下:

<selectname=ThirdOrganizationonchange=”fnChangeAgain(form1.ThirdOrganization.options[form1.ThirdOrganization.selectedIndex].value)”>

</select>

如许,再在script块中再写一个一样的函数,函数内容同ChangeLocation函数,是否是完成了三级联动,那末依此类推,呵呵,10级别联动都能够做,只不外贫苦罢了,固然,你也能够用其他的办法,大概用一个表来对应算法,这任意你,我这例子也是从我实践开辟中得来的一点履历堆集,次要是为了思绪明晰,为不懂程序的人好保护,以是将构造分隔,由于不才从不保护,嘿嘿。

炎天要已往了,呵呵,祝人人安康!祝将来的中秋佳节高兴,我又要一团体在外埠过喽。因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-18 23:18:24 | 只看该作者
那么,ASP.Net有哪些改进呢?
再见西城 该用户已被删除
板凳
发表于 2015-1-26 11:42:55 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
谁可相欹 该用户已被删除
地板
发表于 2015-2-4 15:17:57 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
飘灵儿 该用户已被删除
5#
发表于 2015-2-10 02:52:07 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-28 16:42:34 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
柔情似水 该用户已被删除
7#
发表于 2015-3-10 03:45:45 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-17 04:19:27 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
小女巫 该用户已被删除
9#
发表于 2015-3-23 20:10:57 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表