三级连动菜单,要求在第三级上加按钮,可以查看所有设备.

三级菜单

1<select id="bxdw" name="bxdw" onchange="check_select()">
2<option>请选择部门</option>
3</select>
  1<select id="bxr" name="bxr" onchange="check_dm()">
  2<option value="">请选择员工</option>
  3
  4<select id="bxsb" name="bxsb"> <option value="">请选择设备</option>
  5</select>
  6<input onclick="Javascript:check_all();" type="button"/> 全部设备   
  7  
  8  
  9怎么实现   
 10\---------------------------------------------------------------   
 11  
 12用asp+javascript实现动态数据联动,不刷新   
 13  
 14转贴:Andy.m 日期:2003-08-29 人气:56   
 15/////////////by xxrl(孔曰成仁,孟曰取E)   
 16  
 17/////////////Chinese:蒋健华   
 18  
 19/////////////email:[email protected]   
 20  
 21联动,联动,联动。。。。困扰了好多网友的神经,在CSDN-ASP板块中,总是看到网友们大呼救命,救什么?联动!为什么联动这样受到关注,其实用性无可非议,用户也能认可,可是如果数据是大量并相互关联的,那问题就来了,怎么识别并显示是一个很苦恼的问题。那究竟有没有一个很好的解决办法呢?答案是肯定的,因为我们有asp和javascript,哈哈,那么我们就开始行动吧!   
 22  
 23我们要获得的数据,既然要达到联动的效果,肯定这些数据是有关联的,那么我们用这样的实例来说明我们的方法   
 24  
 25准备条件:   
 26  
 27SQL SERVER 2000 中文企业版,IIS5.0+,IE5.0+,当然,最好有一个好的编辑器,VS.NET就不错,当然,如果你是记事本的拥护者,那我也没办法。L   
 28  
 29我们以人事管理中的部门级别进行联动方法的说明,认识管理中的部门级别可以这样定义,也是实际企业的定义规则,**化工厂/**系统/**部,举例说明就是   
 30  
 31××化工厂/营销系统/市场部,在文中,FirstOrganization表对应的是”××化工厂”,SecondOrganization对应的是”营销系统”,ThirdOrganization对应的是”市场部”   
 32  
 33  
 34  
 35在SQL SERVER 2000中新建两个表,或者三个表,为了我们能更大限度的发挥联动的功能,我们建三个表,呵呵。   
 36  
 37数据库名称:xxrl_STUDY,用户名xxrl_STUDY,密码xxrl_STUDY   
 38  
 39接着建ODBC数据源,你也可以不用,但我这样用,呵呵   
 40  
 41ODBC名:xxrl_ ODBC,用用户名xxrl_STUDY,密码xxrl_STUDY连接,指向xxrl_STUDY数据库,默认中文设置,测试――&gt;ok   
 42  
 43新建表:   
 44  
 45第一个表FirstOrganization   
 46  
 47SQL脚本如下:   
 48  
 49if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FirstOrganization]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)   
 50  
 51drop table [dbo].[FirstOrganization]   
 52  
 53GO   
 54  
 55  
 56  
 57CREATE TABLE [dbo].[FirstOrganization] (   
 58  
 59[id] [int] IDENTITY (1, 1) NOT NULL ,   
 60  
 61[OrganizationName] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,   
 62  
 63[Description] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL   
 64  
 65) ON [PRIMARY]   
 66  
 67GO   
 68  
 69第二个表SecondOrganization   
 70  
 71SQL脚本如下:   
 72  
 73if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SecondOrganization]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)   
 74  
 75drop table [dbo].[SecondOrganization]   
 76  
 77GO   
 78  
 79  
 80  
 81CREATE TABLE [dbo].[SecondOrganization] (   
 82  
 83[id] [int] IDENTITY (1, 1) NOT NULL ,   
 84  
 85[parentID] [int] NOT NULL ,   
 86  
 87[OrganizationName] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,   
 88  
 89[Description] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,   
 90  
 91[OrderNumber] [int] NULL   
 92  
 93) ON [PRIMARY]   
 94  
 95GO   
 96  
 97  
 98  
 99第三个表ThirdOrganization   
100  
101SQL脚本如下:   
102  
103if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ThirdOrganization]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)   
104  
105drop table [dbo].[ThirdOrganization]   
106  
107GO   
108  
109  
110  
111CREATE TABLE [dbo].[ThirdOrganization] (   
112  
113[id] [int] IDENTITY (1, 1) NOT NULL ,   
114  
115[parentID] [int] NOT NULL ,   
116  
117[OrganizationName] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,   
118  
119[Description] [varchar] (8000) COLLATE Chinese_PRC_CI_AS NULL ,   
120  
121[OrderNumber] [int] NULL   
122  
123) ON [PRIMARY]   
124  
125GO   
126  
127  
128  
129Ok,ODBC,我们建好了,数据库也建好了,至于站点的配置,我想大家都应该知道的,这里不再陈述。这里我的站点IP是http://200.100.100.88 (内部网络IP)   
130  
131终于开始写程序喽,好累,噗哧,噗哧,刚帮我同事搬东西,歇一会儿,coffee-ing……….   
132  
133好的,为了方便IIS他老人家,我们也懒得敲多余的字母,我们是聪明的,不勤劳的程序员,本来程序员就已经够累的了,还不方便我们自己?嘿嘿,赞同者鼓掌,啪啪啪啪,faint,哪来的鞭炮?啥家的小孩也不好好管管。。。。。。。。。J   
134  
135新建default.asp文件,我们在写如下程序,   
136  
137建立数据库连接对象,   
138  
139set objconn=server.CreateObject("adodb.connection")   
140  
141objconn.Open " xxrl_ ODBC ","xxrl_STUDY","xxrl_STUDY"   
142  
143然后打开我们要进行操作的3个数据集   
144  
145dim sql1,sql2,sql3   
146  
147sql1="select * from FirstOrganization"   
148  
149sql2 = "select * from SecondOrganization"   
150  
151sql3 = "select * from ThirdOrganization"   
152  
153‘/////////////////////////打开第一组织库   
154  
155set rs1=server.CreateObject("adodb.recordset")   
156  
157rs1.Open sql1,objconn,1,1   
158  
159  
160  
161set rs2=server.CreateObject("adodb.recordset")   
162  
163rs2.Open sql2,objconn,1,1   
164  
165  
166  
167set rs3=server.CreateObject("adodb.recordset")   
168  
169rs3.Open sql3,objconn,1,1   
170\---------------------------------------------------------------   
171  
172建一个SELECT类型的HTTP控件,包含在form表单中如下:   
173  
174‘////////////////////控件的初始值是从FirstOrganization中读取的,FirstOrganization在本例子中只有一个数据就是××化工厂代码如下:   
175  
176<form method="post" name="form1" style="margin:0;">
177<select name="FirstOrganization">   
178  

if rs1.RecordCount &gt;0 then

Response.Write"<option option="" organizationname")&"<="" value="&amp;rs1(“id”)&amp;”&gt;”&amp;rs1(">"

Else

Response.Write "没有配置"

end if

 1  
 2</option></select>
 3</form>   
 4  
 5好,这就是我们的联动功能的头   
 6  
 7下面我们要建立第二个select控件了,第二个select控件中,我们用到了onchange函数,关于这个函数的详细解释,请看MSDN。代码如下(包含在form中):   
 8  
 9<select name="SecondOrganization" onchange="”ChangeLocationi(form1.SecondOrganization.options[form1.SecondOrganization.selectedIndex].value);”">
10<option value="””">\-------------</option>   
11  

if rs2.RecordCount&lt;0 then

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

else

while not rs2.eof

response.write “<option value="”&amp;rs2(“id”)&amp;”">” &amp;rs2(“OrganizationName”)&amp;”</option>”

rs2.movenext

wend

end if

 1  
 2</select>   
 3  
 4OK,第二个也搞定,下面我们来建立第三个SELECT 同样放在form表单里,如下:   
 5  
 6<select name="ThirdOrganization">
 7</select>   
 8  
 9不要忘记关数据集噢,   
10  
11rs1.close   
12  
13set rs1 = nothing   
14  
15rs2.close   
16  
17set rs2 = nothing   
18  
19rs3.close   
20  
21set rs3 = nothing   
22  
23ok,页面元素全部准备就绪,下面开始我们真正的联动之旅。   
24  
25本例子采用ASP和JAVASCRIPT交互的方法取数据库中的数据,由于我们在form表单前我们新建script脚本快,由于要交互,所以我们要这么写才能很好的交互   
26  

=”<script language="javascript">”

1  
2</script>   
3  
4然后我们就可以在script块中书写我们的程序了。   
5  
6我们的基本操作是根据二级下拉中得出三级下拉,二级我们都从数据库中取出来了,下面我们要取三级组织的数据了,如下   
7  

=”<script language="javascript"></script></select>

Published At
Categories with Web编程
Tagged with
comments powered by Disqus