Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1211|回复: 7

求级联下拉列表的例子?

  [复制链接]

该用户从未签到

发表于 2011-11-4 10:48:21 | 显示全部楼层 |阅读模式
求级联下拉列表的例子?
回复

使用道具 举报

该用户从未签到

发表于 2011-11-4 10:48:33 | 显示全部楼层

Re:求级联下拉列表的例子

google搜索。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-11-4 10:48:45 | 显示全部楼层

Re:求级联下拉列表的例子

以前在网上看到一个例子,修改后得,原来是省市县得,基本不符合现在情况。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-11-4 10:48:56 | 显示全部楼层

Re:求级联下拉列表的例子

用Ajax来做级联是满帅的
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-11-4 10:49:11 | 显示全部楼层

Re:求级联下拉列表的例子

我写了个是asp+ajax的,还没有用jsp+ajax写呢.抱歉了.
function CallBackObject()
{
this.XmlHttp = this.GetHttpObject();
}

CallBackObject.prototype.GetHttpObject = function()
{
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}

CallBackObject.prototype.DoCallBack = function(URL)
{
if( this.XmlHttp )
{
if( this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 )
{
var oThis = this;
this.XmlHttp.open(&#39OST', URL);
this.XmlHttp.onreadystatechange = function(){
oThis.ReadyStateChange(); };
this.XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
this.XmlHttp.send(null);
}
}
}

CallBackObject.prototype.AbortCallBack = function()
{
if( this.XmlHttp )
this.XmlHttp.abort();
}

CallBackObject.prototype.OnLoading = function()
{
// Loading
}

CallBackObject.prototype.OnLoaded = function()
{
// Loaded
}

CallBackObject.prototype.OnInteractive = function()
{
// Interactive
}

CallBackObject.prototype.OnComplete = function
(responseText, responseXml)
{
// Complete
}

CallBackObject.prototype.OnAbort = function()
{
// Abort
}

CallBackObject.prototype.OnError = function(status, statusText)
{
// Error
}

CallBackObject.prototype.ReadyStateChange = function()
{
if( this.XmlHttp.readyState == 1 )
{
this.OnLoading();
}
else if( this.XmlHttp.readyState == 2 )
{
this.OnLoaded();
}
else if( this.XmlHttp.readyState == 3 )
{
this.OnInteractive();
}
else if( this.XmlHttp.readyState == 4 )
{
if( this.XmlHttp.status == 0 )
this.OnAbort();
else if( this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK" )
this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML);
else
this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText);

}
}
/=====================================/
上面的是ajax 中使用的CallBakcObject.js 文件
这个调用.
var cbo = new CallBackObject();
cbo.OnComplete = Cbo_Complete_forPre;
cbo.onError = Cbo_Error;
cbo.DoCallBack(url);
/===================/
asp+ajax实现无限制级级连菜单(一)
主页面.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" src="js/CallBackObject.js"></script>
</head>
<script language=jscript><br>
var idCount=0;<br>
var commonStr = "<option value='0'>请选择</option>";<br>
var base_name="newclass_";//菜单的id名字的基本字符串。<br>
var nextId;//当前菜单的菜单的名字。<br>
var currentId;<br>
var currentIdNumber;//当前处理菜单的id数字部分。<br>
var doNext;//是当前的id还是往下处理。<br>
var h_cando_id="h_cando";<br>
var h_lastid_id="h_lastid"<br>
//生成子菜单的名字<br>
function createNextId(fn)<br>
{<br>
var c_id = fn.id;<br>
var len = base_name.length;<br>
var n_id = c_id.substr(len);<br>
n_id++;<br>
currentIdNumber = n_id;<br>
nextId = base_name+n_id;<br>
<br>
return base_name+n_id; <br>
}<br>
//Cur_Done当前处理数据。<br>
function Cur_Done(fn)<br>
{<br>
var cu_idnum = fn.id.substr(base_name.length);<br>
if (cu_idnum==idCount)<br>
return true;<br>
return false;<br>
}<br>
//处理选择动作<br>
function createRequest(orderId,fn)<br>
{<br>
orderId=0;<br>
createNextId(fn);<br>
currentId = fn.value;<br>
var flag = Cur_Done(fn);<br>
//判断当前文件夹是否是最后一个。<br>
if (!flag)<br>
{<br>
orderId=1;<br>
}<br>
var id = escape(document.getElementById(fn.id).value);<br>
var cbo = new CallBackObject();<br>
switch(orderId)<br>
{<br>
case 0:<br>
if (id==0)<br>
return false;<br>
cbo.OnComplete = Cbo_Complete;<br>
cbo.onError = Cbo_Error;<br>
cbo.DoCallBack("testAjax.asp?id=" + id); <br>
break;<br>
case 1:<br>
id = escape(document.getElementById(fn.id).value);<br>
<br>
if (id==0)<br>
return false;<br>
cbo.OnComplete = Cbo_Complete_forPre;<br>
cbo.onError = Cbo_Error;<br>
cbo.DoCallBack("testAjax.asp?id=" + id); <br>
break;<br>
} <br>
}<br>
function Cbo_Complete(responseText, responseXML)<br>
{<br>
idCount++;<br>
//alert("nextId is "+nextId);<br>
<br>
var next_b = document.getElementById("testli");<br>
var nextclass = new Array();<br>
nextclass = responseText.split(';');<br>
var returnStr="";<br>
var returnLine = new Array();<br>
returnStr ="<select name='"nextId"' id='"nextId"' onChange='javascript:createRequest(0,this)'>";<br>
returnStr+=commonStr;<br>
for (i=0;i<nextclass.length-1;i++)<br>
{<br>
returnLine = nextclass.split(':');<br>
returnStr +="<option value='"returnLine[0]"'>";<br>
returnStr +=returnLine[1];<br>
returnStr +="</option>";<br>
}<br>
returnStr +="</select>";<br>
next_b.innerHTML =" " returnStr;<br>
<br>
do_post_flag(nextclass.length,currentId);<br>
//alert(responseText);
}<br>
function Cbo_Complete_forPre(responseText, responseXML)
{
var cur_id_number = currentIdNumber;
var next_b = document.getElementById(nextId);
//处理当前菜单的子菜单级数
for (i=idCount;i>=cur_id_number;i--)
{
var do_name = base_name+i;
var do_id = document.getElementById(do_name);
//从最后一个处理子菜单的内容,清空后赋值
for (j=do_id.length-1;j>=0;j--)
{
do_id.options[j]=null;
do_id.length=0;
}
var do_id_option = document.createElement("option");
do_id_option.text = "请选择";
do_id_option.value = "0";
do_id.options.add(do_id_option);
}
for (i=next_b.length-1;i>=0;i--)
{
next_b.options = null;
next_b.length=0;
}
var nextclass = new Array();
nextclass = responseText.split(';');
var returnStr="";
var returnLine = new Array();
var op = document.createElement("option");
op.text = "请选择";
op.value ="0";
next_b.options.add(op);
for (i=0;i<nextclass.length-1;i++)
{
returnLine = nextclass.split(':');
var option = document.createElement("option");
option.text = returnLine[1];
option.value = returnLine[0];
next_b.options.add(option);
}

do_post_flag(nextclass.length,currentId);
}<br>
function do_post_flag(cur_len,cur_id)
{
var v_candoid = document.getElementById(h_cando_id);
var v_lastid = document.getElementById(h_lastid_id);

v_lastid.value = currentId;

if (cur_len==1)
v_candoid.value =false;
else
v_candoid.value=true;

}<br>
function Cbo_Error(status, statusText, responseText)
{
alert(responseText);
}<br>
</script>
<body>
<%
set conn = Server.CreateObject("adodb.connection")
connstring="provider=sqloledb;server=localhost;uid=sa;pwd=sa;Database=ajaxTest;"
conn.open connstring
set rs = Server.CreateObject("adodb.recordset")
rs.open "select id,infront,idclassflag,newclass from newclass_2001 where infront=0" ,conn,1,1
response.Write("<select name='newclass_0' id='newclass_0' onChange='javascript:createRequest(0,this)'>")
Response.Write("<option value='0'>请选择</option>")
do while not rs.eof
Response.Write("<option value='"&rs("idclassflag")&"'>"&rs("newclass")&"</option>")
rs.movenext
loop
response.Write("</select>")
%>
<label id="testli"></label>
下一级是否有可选项<input type="text" name="h_cando" id="h_cando">
最后选项的名字<input type="text" name="h_lastid" id="h_lastid">

</body>
</html>



/===================/

asp+ajax实现无限制级级连菜单(二)testAjax.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
set conn = Server.CreateObject("adodb.connection")
connstring="provider=sqloledb;server=localhost;uid=sa;pwd=sa;Database=ajaxTest;"
conn.open connstring
set rs = Server.CreateObject("adodb.recordset")
rs.open "select * from newclass_2001 where infront='"&request("id")&"'" ,conn,1,1
do while not rs.eof
Response.Write(rs("idclassflag")&":"&rs("newclass")&";")
rs.movenext
loop

%>

生成数据库脚本
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[newclass_2001]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[newclass_2001]
GO
CREATE TABLE [dbo].[newclass_2001] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[infront] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[idclassflag] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[newclass] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
infront 字段为父文件夹的id;
idclassflag为自身的id;
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-11-4 10:49:23 | 显示全部楼层

Re:求级联下拉列表的例子

摆脱楼上的用一下[code]好不,想累死人啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-11-4 03:45:37 | 显示全部楼层
说的不错!













第五代QQ机器人QQ群机器人论坛QQ机器人智能客服机器人QQplus机器人QQ群互联机器人..联系QQ800829129 QQ群28352615
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-1-22 23:09:52 | 显示全部楼层
不限流量不限网速,山区、农村、城镇高速免费上网不花钱!最新9500WG接收信号高达19公里,无论您身在地球任何一个角落,都能搜到信号实现免费上网,最新软件全自动智能管理,信号强,网速快,优先自动连接上网,免去您任何手动繁琐作,保证让您高速上网免费不花钱就是这么简单!
朋友们,您还在为家里装修要拉网线烦恼吗?还在忧愁每年交昂贵网费吗?还在苦恼出差无法上网吗?还在傻傻节省4G流量每月还要高达几十元流量费吗?还在敢怒不敢言的公司、学校、宿舍限制上网吗?还在苦逼每天站在阳台高举手机为了搜一个wifi吗?世界上最遥远的距离是明明有wifi,却用不了是多么痛苦的事!玩一会王者荣耀没了几个G的流量,看了一会视频,没了几个G的流量,壕!?还是无奈!?明明很节省,没用少则几十元多则上百元的流量费,如此高昂的费用是不是让您皱眉呢?没关系,用最新9500WG永久免费上网吧!只要238元让您永久免费上网不花钱,无需电脑,无需布线,只需插电,电脑、手机、平板免费上网就是这么任性,wifi信号覆盖高达19公里,无需站阳台,无需放窗外,想在哪里就在哪里!信号强,网速快,免费上网,能免则免,免费到底!
免费热线:188-2652-1502  客服QQ:1094201567 官网 www.ccyxf.com












9500WG
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-3-29 16:48 , Processed in 0.387538 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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