你可以把数据预先读出,生成javascript字符串,设定为javascript下拉菜单的值。但是值太多的时候,会影响速度。
解决方案 »
- hibernate 一对多 排序配置
- HTMLParser解析 能不能像文档那样取得相关的字结点
- fckedit的问题
- 大家帮帮忙,一个javascript的问题,在线急等。。。
- 程序部署到一台linux后java代码可以拿到sqlserver连接,但部署到另一台linux后问什么就不能拿到该数据库的连接了?
- javascript問題,來者有分,分不夠加
- 请问可以在jsp文件中定义java类吗?
- eclipse安装的总是
- 页面刷新问题
- 请教高手!weblogic6.0以上,部署EJB时不用运行weblogic.ejbc?
- 点击页面上一个按钮,页面刷新,但希望某个变量值不变??
- 请问有没有直接利用HTML的框架
表名china
(也可以用SQLSERVER导入工具导入data.mdb)创建数据表的SQL语句CREATE TABLE china (
id Integer,
province VarChar(50),
city VarChar(50))
第二个下拉框中总是显示一堆错误,返回不了我想要的值select.htm<script language="JavaScript">
function GetResult(str)
{
/*
*--------------- GetResult(str) -----------------
* GetResult(str)
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult(document.all.userid.value);
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult(str) -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","server.jsp?sel="+str,false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
//通过XMLHTTP返回数据,开始构建Select.
BuildSel(unescape(oBao.responseText),document.all.sel2)
}function BuildSel(str,sel)
{
/*
*--------------- BuildSel(str,sel) -----------------
* BuildSel(str,sel)
* 功能:通过str构建Select.
* 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3"
* 参数:sel,要构建的Select
* 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- BuildSel(str,sel) -----------------
*/
//先清空原来的数据.
sel.options.length=0;
var arrstr = new Array();
arrstr = str.split(",");
//开始构建新的Select.
for(var i=0;i<arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
}
}
</script>
<select name="sel" onChange="GetResult(this.value)">
<option value="">请选择
<option value="福建省">福建省
<option value="湖北省">湖北省
<option value="辽宁省">辽宁省
<select>
<select name="sel2"></select>
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=txywgl";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
var province = request.getParameter("sel");
var arrResult = new Array();
var sql = "select city from china where province='"+province+"'";
ResultSet rs=stmt.executeQuery(sql);
try
{
while(!rs.EOF)
{
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs("city").Value;
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
out.println(escape(arrResult.join(",")));
}
catch (Exception e)
{
out.println(e.getMessage());
}%>
用的是IFAME,数据库是父子关系结构。当然要用JAVASCRIPT了。
<select name="firstLevel" onchange="_viewSecondLevel();">
<option>-请选择-</option>
</select>
<select name="secondLevel" onchange="_viewThirdLevel();">
<option>-请选择-</option>
</select>
<select name="thirdLevel">
<option>-请选择-</option>
</select>
</form><!------三级联动菜单DEMO ->
<SCRIPT LANGUAGE="JavaScript">
<!--
var record = new Array();
record[0] = "1,1.1,1.1.1"
record[1] = "1,1.1,1.1.2"
record[2] = "1,1.2,1.2.1"
record[3] = "1,1.2,1.2.2"
record[4] = "2,2.1,2.1.1"
record[5] = "2,2.1,2.1.2"
record[6] = "2,2.2,2.2.1"
record[7] = "2,2.2,2.2.2"//显示第一级
var sForm = document.frm;
var first = sForm.firstLevel;var firstLevelLength = 1
var firstLevels = "";
var index = 1;
for(var i=0;i < record.length;i++){
var recordArray = record[i].split(",")
if(!contains(firstLevels,recordArray[0])){
first.options[index++]=new Option(recordArray[0],recordArray[0]);
if (firstLevels != "") firstLevels += ",";
firstLevels += recordArray[0];
}
}
//判断用","分开字符串str1中是否有str2
function contains(str1, str2)
{
a=str1.split(",")
for (var i = 0;i<a.length;i++) {
if(str2==a[i]){
return true;
}
}
return false;
}function _viewSecondLevel()
{
var second = sForm.secondLevel;
var third = sForm.thirdLevel; var firstValue = sForm.firstLevel.value; var secondLevelLength = 1
var secondLevels = ""
var index = 1;
for(var i=0;i < record.length;i++){
var recordArray = record[i].split(",")
if(firstValue ==recordArray[0] && !contains(secondLevels,recordArray[1])){
second.options[index++]=new Option(recordArray[1],recordArray[1]);
if (secondLevels != "") secondLevels += ",";
secondLevels += recordArray[1];
}
}
third.length=0
third.options[0]=new Option("请选择","")
_viewThirdLevel()
}function _viewThirdLevel()
{
var third = sForm.thirdLevel; var firstValue = sForm.firstLevel.value;
var secondValue = sForm.secondLevel.value; var thirdLevelLength = 1
var thirdLevels = ""
var index = 1;
for(var i=0;i < record.length;i++){
var recordArray = record[i].split(",")
if(firstValue ==recordArray[0] && secondValue == recordArray[1] && !contains(thirdLevels,recordArray[2])){
third.options[index++]=new Option(recordArray[2],recordArray[2]);
if (thirdLevels != "") thirdLevels += ",";
thirdLevels += recordArray[2];
}
}
}
//-->
</SCRIPT>
这个数组,你可以用java从数据库里读出来,再赋给他,就是从数据库里动态生成的了