省市二级联动数据库生成代码(JAVA)
省市联动代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>php+ajax动态生成下拉菜单</title>
<script language="JavaScript" src="../include/js/regions.js"></script>
{
$ra[area]=iconv('gb2312','UTF-8',$ra[area]);
echo "obja.options[obja.options.length] = new Option('".$ra[area]."','".$ra[area]."');\n";
$i++;
xmlHttp.send(null);
//setTimeout("startRequest()",2000);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
xmlHttpa.onreadystatechange = handleStateChangearea;
document.getElementById('select2').options.length = 0;
省份对应城市的脚本(双联动)
provinceList['江西省'] = ["南昌市","九江市","景德镇市","上饶市","鹰潭市","余春市","新余市","萍乡市","赣州市","吉安市","井冈山市","抚州市","黎川市","庐山市"];
provinceList['安徽省'] = ["合肥市","淮南市","蚌埠市","宿州市","淮北市","阜阳市","亳州市","六安市","巢湖市","滁州市","芜湖市","宣城市","黄山市","马鞍山市","铜陵市","黄山市","安庆市","太湖市"];
二级联动
为了在窗体显示时去除列表框的重复值和空格,可以使用Add方法,如下面的代码所示。
#001 Private Sub UserForm_Initialize()#002 On Error Resume Next#003 Dim ColAs New Collection#004 Dim rng As Range, arr#005 Dim iAs Integer#006 For Each rng In Range("A1:A" & [a65536].End(xlUp).Row)#007 If Trim(rng) <> "" Then#008 Col.Addrng, key:=CStr(rng)#009 End If#010 Next#011 ReDimarr(1 To Col.Count)#012 Fori = 1 To Col.Count#013 arr(i) = Col(i)#014 Next#015 Me.ListBox1.List = arr#016 End Sub代码解析:窗体的初始化事件,去除列表框引用工作表数据中的重复值和空格。
第2行代码,错误处理语句,忽略错误。
第3行到第5行代码,声明变量类型。
第6行到第9行代码代码,在列表框引用的工作表数据中循环,把工作表数据源中的空格去除后使用Add方法添加到变量Col中。
Add方法添加一个成员到Collection 对象,语法如下:object.Add item, key, before, after参数object是必需的,一个有效的对象。
参数Item是必需的,任意类型的表达式,指定要添加到集合中的成员。
参数Key是可选的,唯一字符串表达式,指定可以使用的键字符串,代替位置索引来访问集合中的成员。
如果指定的key和集合中现有成员的key发生重复,则会导致错误发生。
所以在第2行代码中使用错误处理语句,忽略错误,继续执行下一句代码,这样就将数据源中的重复值去除。
【IT专家】省市二级联动代码
省市二级联动代码2010/11/02 0 !DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“w3/TR/xhtml1/DTD/xhtml1-transitional.dtd”html xmlns=“w3/1999/xhtml”head meta http-equiv=“Content-Type”content=“text/html; charset=gb2312”/ title 无标题文档/title /head SCRIPT type=“text/javascript”function refresh_screen(){window.location.reload()}function Link(name, value){ = name;this.value = value;this.title = new Array();this.url = new Array();}var names = new Array ();var temp = new Array ();var back = new Array ();var link = new Link ();var final_list = new Array ();var menu = new Array (“所有省市|*|所有地区”,“浙江|浙江*|所有地区#”+”杭州|杭州#”+”宁波|宁波#”+”金华|金华#”+”温州|温州#”+”绍兴|绍兴#”+”嘉兴|嘉兴#”+”衢州|衢州#”+”湖州|湖州#”+”台州|台州#”+”舟山|舟山#”+”丽水|丽水”,“江苏|江苏*|所有地区#”+”南京|南京#”+”镇江|镇江#”+”常州|常州#”+”无锡|无锡#”+”苏州|苏州#”+”扬州|扬州#”+”连云港|连云港#”+”南通|南通#”+”宿迁|宿迁#”+”徐州|徐州#”+”淮阴|淮阴#”+”泰州|泰州#”+”盐城|盐城”,“湖南|湖南*|所有地区#”+”长沙|长沙#”+”株洲|株洲#”+”湘潭|湘潭#”+”常德|常德#”+”郴州|郴州#”+”怀化|怀化#”+”邵阳|邵阳#”+”湘西|湘西#”+”益阳|益阳#”+”永州|永州#”+”衡阳|衡阳#”+”娄底|娄底#”+”张家界|张家界#”+”岳阳|岳阳”,“江西|江西*|所有地区#”+”南昌|南昌#”+”上饶|上饶#”+”萍乡|萍乡#”+”九江|九江#”+”赣州|赣州#”+”景德镇|景德镇#”+”鹰潭|鹰潭#”+”新余|新余#”+”抚州|抚州#”+”吉安|吉安#”+”宜春|宜春”,“上海|上海*|所有地区#”+”上海|上海”,“四川|四川*|所有地区#”+”成都|成都#”+”宜宾|宜宾#”+”德阳|德阳#”+”广安|广安。
史上最强省市县三级联动菜单(附源码详解)
注册时一般都有选择自己的籍贯或家庭地址这一项,最近几天也为了这个纠结了几天,总结了一下,在这里写了一个小例子,源代码都有,步骤也写的很详细了,希望对大家有点帮助!
学习交流QQ:1134135987
我的项目结构是
项目运行后是这样的:
点击“注册”按钮后的效果为:
这样就OK了,这只是一个小例子而已,在实际的的项目中,就可以在后台接收这个三个值了,然后保存到数据库中,这里就不做详细介绍了。
以下是源代码:
showCity.jsp里面的代码:
city.js里面的代码:
getCity.js里面的代码:。
省市联动效果的简单实现代码(推荐)
省市联动效果的简单实现代码(推荐)下拉框⼆级联动效果在⽇常应⽤场景中经常会碰到,尤其是涉及地区、品种等有多级选项时。
例如:常见的省市联动下拉框,在选择省份时,城市列表也会更随改变。
思路:1,所谓联动效果,是指出发⽗级的数据变化时,会影响到关联性⼦级数据元素的变化。
下⾯是造的省市的数据:var linkDatas = {provinces:[{"code":"0","name":"请选择"},{"code":"1","name":"北京"},{"code":"2","name":"天津"},{"code":"3","name":"河北"},{"code":"4","name":"湖北"},{"code":"5","name":"⼴东"},{"code":"6","name":"其他"}],citys:{0:["请选择"],1:["朝阳区","海淀区","东城区","西城区","房⼭区","其他"],2:["天津"],3:["沧州","⽯家庄",4:["武汉市","宜昌市","襄樊市","其他"],5:["⼴州市","深圳市","汕头市","佛⼭市","珠海市","其他"],6:["其他"]}};2,根据数据动态⽣成option节点:function addOptions(target,options){var optionEle = null,target = target,option = options,optionLen = options.length;for(var i = 0;i < optionLen;i++){optionEle = document.createElement('option');optionEle.value = option[i].value;optionEle.text = option[i].text;target.options.add(optionEle);}}3,根据上述省市数据,其中code代表“省级”指向“城市”的标识符,当省级的数据变更时,出发change事件:pro.onchange = function(){console.log(this);var ct = city[this.value],ctLen = ct.length,ctBox = [];c.innerHTML = "";/*添加城市*/for(var j = 0;j < ctLen;j++){ctBox.push({"text" : ct[j],"value": ct[j]});}addOptions(c,ctBox);}HTML代码:<div class="content"><h3>下拉框联动效果</h3><p>省份:<select name="provinces" id="provinces"></select></p><p>市:<select name="citys" id="citys"></select></p></div>全部JavaScript代码:"code":"0","name":"请选择"},{"code":"1","name":"北京"},{"code":"2","name":"天津"},{"code":"3","name":"河北"},{"code":"4","name":"湖北"},{"code":"5","name":"⼴东"},{"code":"6","name":"其他"}],citys:{0:["请选择"],1:["朝阳区","海淀区","东城区","西城区","房⼭区","其他"],2:["天津"],3:["沧州","⽯家庄","秦皇岛","其他"],4:["武汉市","宜昌市","襄樊市","其他"],5:["⼴州市","深圳市","汕头市","佛⼭市","珠海市","其他"],6:["其他"]}};function addOptions(target,options){ var optionEle = null,target = target,option = options,optionLen = options.length;for(var i = 0;i < optionLen;i++){optionEle = document.createElement('option');optionEle.value = option[i].value;optionEle.text = option[i].text;target.options.add(optionEle);}}function provincesCitysLink(pro,c){var LD = linkDatas,provinces = LD.provinces,city = LD.citys,initCity = city[0],proBox = [];/*添加省份*/for(var i = 0;i < provinces.length;i++){proBox.push({"text" : provinces[i].name,"value": provinces[i].code})}addOptions(pro,proBox);/*初始化城市*/addOptions(c,[{"text" : initCity,"value": initCity}]);/*添加联动事件*/pro.onchange = function(){console.log(this);var ct = city[this.value],ctLen = ct.length,ctBox = [];c.innerHTML = "";/*添加城市*/for(var j = 0;j < ctLen;j++){ctBox.push({"text" : ct[j],"value": ct[j]});}addOptions(c,ctBox);}}var provinces = document.getElementById('provinces'),citys = document.getElementById('citys');provincesCitysLink(provinces,citys);以上这篇省市联动效果的简单实现代码(推荐)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
简单的二级联动jsp代码
二级联动:个人浅见例如我们购物的时候选择邮寄地址的时候会出现现在省份,我们选择省之后就会出现相应的市,这种方式成为二级联动,顾名思义三级联动就是你点击了市之后出现的县等等。
本文档只提供了二级联动的代码,简单的提供,市的数据并不齐全,希望能够对正在学习的朋友有一定的帮助!!注意:代码中的所有标点符号均为英文状态输入下的标点<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>erjiliandong.html</title><meta http-equiv="keywords"content="keyword1,keywo rd2,keyword3"><meta http-equiv="description"content="this is my page"><meta http-equiv="content-type"content="text/html; charset=UTF-8"><!--<link rel="stylesheet"type="text/css"href="./styles.css">--></head><body>省:<select id="s1"onchange="x(this.value)"> <option>---请选择---</option><option value="hns">河南省</option><option value="hbs">河北省</option><option value="sds">山东省</option></select>市:<select id="s2"><option>---请选择---</option></select><script type="text/javascript">//用数组存放数据各个省的var hns=new Array("hns","郑州市","南阳市","信阳市"); var hbs=new Array("hbs","石家庄市","保定","邯郸"); var sds=new Array("sds","济南市","烟台","青岛");var datas=new Array(hns,hbs,sds);function x(v){var s2=document.getElementById("s2");var o=s2.getElementsByTagName("option");for(var k=0;k<o.length;k++){s2.removeChild(o[k]);k--;}for(var i=0;i<datas.length;i++){if(v==datas[i][0]){for(var j=1;j<datas[i].length;j++){//创建option标签var ops=document.createElement("option");ops.innerHTML=datas[i][j];s2.appendChild(ops);}}}}</script></body></html>。
二级联动(根据数据库内容选择)
二级联动(根据数据库内容选择)
根据picker组件实现联动选择,数据库这几位二级层次展示数据。。。30磅下面有两条数据 1.Xml里面:value值设为尺寸或者套餐的id,range为尺寸或者套餐的选择的内容名称,text里面是根据一级二级分类的下标查找名称,下标 默认为0,刷新页面直接看到下标为0的数据
2.Js里面:请求接口,获取数据形式为二级数组展示
3.打印出的数据,进行查看来自
省市级联两级数据(专业整理过的)
INSERT INTO `sys_city` VALUES ('540', '1', ' 东城区 ', '0');
INSERT INTO `sys_city` VALUES ('541', '1', ' 西城区 ', '0');
DROP TABLE IF EXISTS `sys_city`;
CREATE TABLE `sys_city` (
`city_id` int(11) NOT NULL AUTO_INCREMENT,
`province_id` int(11) DEFAULT NULL,
`city_name` varchar(100) DEFAULT NULL,
INSERT INTO `sys_province` VALUES ('14', '河北省', '0');
INSERT INTO `sys_province` VALUES ('15', '河南省', '0');
INSERT INTO `sys_province` VALUES ('16', '山东省', '0');
INSERT INTO `sys_province` VALUES ('26', '福建省', '0');
Java当中两级下拉条联动的实现方式
两级下拉条联动方式:1.javascript就是直接用javascript实现,加入一个changeCategory()方法, 从服务器返回一个字符串。
这个字符串由服务器查询数据库动态生成。
和ajax的区别就是在于,不用XHR对象。
直接使用的onchange传值。
2.ajax + 自定义字符串id + 名字,传递的是一个完整字符串。
通过“-”隔开每个记录,然后在每个记录当中通过“,”隔开id和名字。
for (int i=0;, i<childs.size(); i++){Category c = childs.get(i);buf.append(c.getId()+”,”+c.getName()+”-”);}//删掉最后一个没有必要的”-”buf.deleteCharAt(buf.length()-1);parse(req.responseText)然后到客户端用,split来解析。
注意,解析两次,用两个字符数组完成。
第一次,用“-”split得到每一条记录,然后用“,”得到id和名字。
3.ajax + xml最麻烦,效率也不高。
同样需要循环,for (int i=0;, i<childs.size(); i++){Category c = childs.get(i);buf.append(“<category><id>”+c.getId()+ </id><name>“+c.getName() + ”</name></category>,”);}buff.insert (0, “<categories>”);buff.append(</categories>)然后到客户端,用javascript解析。
用tagbyname.注意,这次在客户端,不用parse(req.responseText)而需要使用parseXML(req.responseXML); var categories = xml.getElementsByTagName(“msg”)[0];for(var i=0; i <categories.childNodes.length, i++){var category =categories[i];在callback当中:var msg = req.responseXML.getElementsByTagName(“msg”)[0];setMsg(msg.childNodes[0].nodeValue);xml需要在服务器构建,并在客户机需要解析。
html二级联动(省市联动)
html⼆级联动(省市联动)<!DOCTYPE html><html><head><meta charset="UTF-8"><title>⼆级联动</title><script>// 创建⼀个⼆维数组var arr = new Array(2);arr[0] = ["⼴东","⼴州","深圳","佛⼭"];arr[1] = ["湖北","荆州","武汉","⾚壁"];function choose(val){// 获取city的selectvar city = document.getElementById("city");// 获取optionvar cityOp = city.getElementsByTagName("option");// 设置可操作city.disabled = false;// 先删除,后添加for (var i = 0; i < cityOp.length; i++) {var op = cityOp[i];// 删除optioncity.removeChild(op);//数组长度发⽣变化,需处理i--;}// 遍历for (var i = 0; i < arr.length; i++) {//取⼀维数组var arr1 = arr[i];//取⼀维数组的第⼀个值var firstVal = arr1[0];//判断if(firstVal == val){//遍历for (var j = 1; j < arr1.length; j++) {// 获取城市名var value = arr1[j];// 创建optionvar optionl = document.createElement("option");// 创建⽂本var textl = document.createTextNode(value);// 把⽂本添加到标签optionl.appendChild(textl);//添加到city⾥⾯city.appendChild(optionl);}}}}</script></head><body><select id="province" onchange="choose(this.value)"><option value="0">--请选择省--</option><option value="⼴东">⼴东</option><option value="湖北">湖北</option></select><select id="city" disabled="disabled"><option value="0">--请选择市--</option></select></body> </html>。
省市区多级联动数据组合
省市区多级联动数据组合话不多说,直接说重点。
最近⽤到了省市区数据联动。
数据格式是这样的:$array = [0 => ['id' => 1,'pid' => 0,'name' => 't1',],1 => ['id' => 2,'pid' => 0,'name' => 't2',],2 => ['id' => 3,'pid' => 0,'name' => 't3',],3 => ['id' => 4,'pid' => 1,'name' => 't1-t4',],4 => ['id' => 5,'pid' => 2,'name' => 't2-t5',],5 => ['id' => 6,'pid' => 4,'name' => 't1-t4-t6',],];返回格式要求是这样的:Array([0] => Array([id] => 1[pid] => 0[name] => t1[child] => Array([0] => Array([id] => 4[pid] => 1[name] => t1-t4[child] => Array([0] => Array([id] => 6[pid] => 4[name] => t1-t4-t6)))))[1] => Array([id] => 2[pid] => 0[name] => t2[child] => Array([0] => Array([id] => 5[pid] => 2[name] => t2-t5)))[2] => Array([id] => 3[pid] => 0[name] => t3))在知道数组层级且层级⽐较少的情况下,最简单粗暴的⽅式当然是多层遍历组装数组。
联动模式二编程
联动模式二编程摘要:一、联动模式二编程概述二、联动模式二编程的基本原理三、联动模式二编程的实际应用四、联动模式二编程的优缺点分析五、联动模式二编程的未来发展趋势正文:一、联动模式二编程概述联动模式二编程,是一种在计算机领域中广泛应用的编程模式,主要用于解决多个程序或系统之间的协同工作问题。
这种编程模式可以让不同的程序或系统之间实现数据共享和信息交流,从而提高整体的工作效率和运行效果。
二、联动模式二编程的基本原理联动模式二编程的基本原理是通过特定的编程技术和方法,使得不同的程序或系统之间能够实现数据共享和信息交流。
具体来说,就是通过编写特定的程序代码,使得不同的程序或系统之间能够相互理解和响应对方的操作,从而达到协同工作的目的。
三、联动模式二编程的实际应用联动模式二编程在实际应用中,主要应用于以下领域:1.数据库系统:通过联动模式二编程,可以实现多个数据库系统之间的数据共享和信息交流,从而提高数据库系统的运行效率和数据处理能力。
2.分布式系统:通过联动模式二编程,可以实现分布式系统之间的协同工作,从而提高分布式系统的整体性能和运行效率。
3.网络应用程序:通过联动模式二编程,可以实现网络应用程序之间的数据共享和信息交流,从而提高网络应用程序的运行效果和用户体验。
四、联动模式二编程的优缺点分析联动模式二编程的优点主要表现在以下几个方面:1.提高工作效率:通过联动模式二编程,可以实现多个程序或系统之间的协同工作,从而提高整体的工作效率和运行效果。
2.提高数据处理能力:通过联动模式二编程,可以实现多个数据库系统之间的数据共享和信息交流,从而提高数据处理能力和数据利用率。
3.提高系统性能:通过联动模式二编程,可以实现分布式系统之间的协同工作,从而提高系统的整体性能和运行效率。
联动模式二编程的缺点主要表现在以下几个方面:1.编程难度大:联动模式二编程需要编写特定的程序代码,才能实现不同程序或系统之间的数据共享和信息交流,因此编程难度较大。
java实现的二级联动菜单效果
java实现的⼆级联动菜单效果本⽂实例讲述了java实现的⼆级联动菜单效果。
分享给⼤家供⼤家参考,具体如下:JSP代码:<%@ page language="java" pageEncoding="UTF-8"%><html><head><title>⼆级菜单联动演⽰</title><script type="text/javascript">var req;window.onload=function(){//页⾯加载时的函数}function Change_Select(){//当第⼀个下拉框的选项发⽣改变时调⽤该函数var province = document.getElementById('province').value;var url = "select?id="+ escape(province);if(window.XMLHttpRequest){req = new XMLHttpRequest();}else if(window.ActiveXObject){req = new ActiveXObject("Microsoft.XMLHTTP");}if(req){req.open("GET",url,true);//指定回调函数为callbackreq.onreadystatechange = callback;req.send(null);}}//回调函数function callback(){if(req.readyState ==4){if(req.status ==200){parseMessage();//解析XML⽂档}else{alert("不能得到描述信息:" + req.statusText);}}}//解析返回xml的⽅法function parseMessage(){var xmlDoc = req.responseXML.documentElement;//获得返回的XML⽂档var xSel = xmlDoc.getElementsByTagName('select');//获得XML⽂档中的所有<select>标记var select_root = document.getElementById('city');//获得⽹页中的第⼆个下拉框select_root.options.length=0;//每次获得新的数据的时候先把每⼆个下拉框架的长度清0for(var i=0;i<xSel.length;i++){var xValue = xSel[i].childNodes[0].firstChild.nodeValue;//获得每个<select>标记中的第⼀个标记的值,也就是<value>标记的值var xText = xSel[i].childNodes[1].firstChild.nodeValue;//获得每个<select>标记中的第⼆个标记的值,也就是<text>标记的值var option = new Option(xText, xValue);//根据每组value和text标记的值创建⼀个option对象try{select_root.add(option);//将option对象添加到第⼆个下拉框中}catch(e){}}}</script></head><body><div align="center"><form name="form1" method="post" action=""><table width="70%" border="0" cellspacing="0" cellpadding="0"><tr><td align="center">⼆级联动⽰例</td></tr><tr><td><select name="province" id="province" onChange="Change_Select()"> <!–第⼀个下拉菜单–><option value="0">请选择</option><option value="1">北京</option><option value="2">天津</option><option value="3">⼭东</option></select><select name="city" id="city"><!–第⼆个下拉菜单–><option value="0">请选择</option></select></td></tr><tr><td></td><tr></table></form></div></body></html>Java代码:package com;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/***** @author zdw**/public class SelectServlet extends HttpServlet{private static final long serialVersionUID = 1L;public SelectServlet(){super();}public void destroy(){super.destroy();}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{// response.setCharacterEncoding("GBK");response.setContentType("text/xml");response.setHeader("Cache-Control", "no-cache");request.setCharacterEncoding("GBK");response.setCharacterEncoding("UTF-8");String targetId = request.getParameter("id").toString();System.out.println(targetId);// 获得请求中参数为id的值String xml_start = "<selects>";String xml_end = "</selects>";String xml = "";if (targetId.equalsIgnoreCase("0")){xml = "<select><value>0</value><text>请选择</text></select>";} else if (targetId.equalsIgnoreCase("1")){xml = "<select><value>1</value><text>昌平</text></select>";xml += "<select><value>2</value><text>丰台</text></select>";xml += "<select><value>3</value><text>海淀</text></select>";xml += "<select><value>4</value><text>朝阳</text></select>";} else if (targetId.equalsIgnoreCase("2")){xml = "<select><value>1</value><text>塘沽区</text></select>";xml += "<select><value>2</value><text>汉沽区</text></select>";xml += "<select><value>3</value><text>⼤港区</text></select>";xml += "<select><value>4</value><text>东丽区</text></select>";} else{// 如果是3,则返回下⾯的字符xml = "<select><value>1</value><text>济南</text></select>";xml += "<select><value>2</value><text>青岛</text></select>";xml += "<select><value>3</value><text>淄博</text></select>";xml += "<select><value>4</value><text>枣庄</text></select>";}String last_xml = xml_start + xml + xml_end;response.getWriter().write(last_xml);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{doGet(request, response);}public void init() throws ServletException{}}XML代码:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>SelectServlet</servlet-name><servlet-class>com.SelectServlet</servlet-class></servlet><servlet-mapping><servlet-name>SelectServlet</servlet-name><url-pattern>/select</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>更多java相关内容感兴趣的读者可查看本站专题:《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。
Java基础知识:Java实现Map集合二级联动4
Java基础知识:Java实现Map集合⼆级联动4 comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label = new JLabel(); label.setText("省/直辖市"); label.setBounds(155, 30, 66, 18); panel.add(label); final JLabel label_1 = new JLabel(); label_1.setText("市/县"); label_1.setBounds(375, 30, 37, 18); panel.add(label_1); final JLabel label_2 = new JLabel(); label_2.setBounds(36, 43, 65, 18); backgroundPanel.add(label_2); label_2.setHorizontalAlignment(SwingConstants.RIGHT); label_2.setHorizontalTextPosition(SwingConstants.LEADING); label_2.setText("姓名:"); textField = new JTextField(); textField.setBounds(113, 38, 154, 28); backgroundPanel.add(textField); final JLabel label_3 = new JLabel(); label_3.setBounds(36, 84, 65, 18); backgroundPanel.add(label_3); label_3.setHorizontalAlignment(SwingConstants.RIGHT); label_3.setHorizontalTextPosition(SwingConstants.LEADING); label_3.setText("性别:"); comboBox_1 = new JComboBox(); comboBox_1.setBounds(113, 81, 66, 25); backgroundPanel.add(comboBox_1); comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"男", "⼥"})); final JLabel label_4 = new JLabel(); label_4.setBounds(36, 212, 65, 18); backgroundPanel.add(label_4); label_4.setHorizontalAlignment(SwingConstants.RIGHT); label_4.setHorizontalTextPosition(SwingConstants.LEADING); label_4.setText("详细地址:"); textField_1 = new JTextField(); textField_1.setBounds(113, 208, 367, 28); backgroundPanel.add(textField_1); final JLabel label_4_1 = new JLabel(); label_4_1.setBounds(36, 252, 65, 18); backgroundPanel.add(label_4_1); label_4_1.setHorizontalTextPosition(SwingConstants.LEADING); label_4_1.setHorizontalAlignment(SwingConstants.RIGHT); label_4_1.setText("E-mail:"); textField_3 = new JTextField(); textField_3.setBounds(113, 248, 367, 27); backgroundPanel.add(textField_3); final JButton button = new JButton(); button.setBounds(159, 289, 75, 28); backgroundPanel.add(button); button.setText("保存"); final JButton button_1 = new JButton(); button_1.setBounds(265, 289, 75, 28); backgroundPanel.add(button_1); button_1.setText("重置"); // } /** * 获取省、直辖市,⾃治区 * * @return */ public Object[] getProvince() { Map map = CityMap.model;// 获取省份信息保存到Map中 Set set = map.keySet(); // 获取Map集合中的键,并以Set集合返回 Object[] province = set.toArray(); // 转换为数组 return province; // 返回获取的省份信息 } /** * 获取指定省对应的市/县 * * @param selectProvince * @return */ public String[] getCity(String selectProvince) { Map map = CityMap.model; // 获取省份信息保存到Map中 String[] arrCity = map.get(selectProvince); // 获取指定键的值 return arrCity; // 返回获取的市/县 } private void itemChange() { String selectProvince = (String) comboBox.getSelectedItem(); cityComboBox.removeAllItems(); // 清空市/县列表 String[] arrCity = getCity(selectProvince); // 获取市/县 cityComboBox.setModel(new DefaultComboBoxModel(arrCity)); // 重新添加市/县列表的值 } } 效果如图:。
Java实现省市联动部分功能参考代码
import com.bean.Promary;
import com.citymanager.Manager;
/**
*显示窗口
* @author CWB
*
*/
public class ShowView extends JFrame implements ItemListener{
}
//初始化界面方法
public void init() {
this.plbl=new JLabel("省份:");
this.clbl=new JLabel("城市:");
this.pBox=new JComboBox();this.cBox=new JComboBox();
this.pcbm=new DefaultComboBoxModel();bm=new DefaultComboBoxModel();
private List<City> cList;
private Manager manager;
//构造方法
public ShowView(){
manager=new Manager();
this.setSize(550, 400);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
promary.setPname(p.getPname());
//System.out.println(promary.getPname());
cList=manager.updateCity(p);
for(City c:cList){
ccbm.addElement(c.getCname());
js使用xml数据载体实现城市省份二级联动效果
js使⽤xml数据载体实现城市省份⼆级联动效果本⽂实例为⼤家分享了使⽤xml数据载体实现城市省份⼆级联动的具体代码,供⼤家参考,具体内容如下⾸先写好前台页⾯testProvince.jsp,将请求通过open、send发送到服务器<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href="<%=basePath%>" rel="external nofollow" ><title>⼆级联动</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><style type="text/css">select{width:111px;}</style></head><body><select id="provinceID"><option>选择省份</option><option>湖南</option><option>⼴东</option></select><select id="cityID"><option>选择城市</option></select></body><script type="text/javascript">//创建ajax对象function createAjax(){var ajax = null;try{ajax = new ActiveXObject("microsoft.xmlhttp");}catch(e){try{ajax = new XMLHttpRequest();}catch(e1){alert("请更换浏览器");}}return ajax;}</script><script type="text/javascript">document.getElementById("provinceID").onchange = function(){//清空城市除了第⼀项var cityElem = document.getElementById("cityID");cityElem.options.length = 1;//获取选中的省份var province = this.value;//进⾏编码处理province = encodeURI(province);if("选择省份" != province){var ajax = createAjax();//提交⽅式为GETvar method = "GET";//提交路径为servlet路径var url = "${pageContext.request.contextPath}/ProvinceServlet?time=" + new Date().getTime()+"&province=" +province;//准备发送异步请求ajax.open(method, url);//由于是get请求,所以不需要设置请求头//发送请求ajax.send(null);//监听服务器响应状态的变化ajax.onreadystatechange = function(){//响应状态为4 表⽰ajax已经完全接受到服务器的数据了if(ajax.readyState == 4){//接收到的数据正常if(ajax.status == 200){//获取服务器传来的html数据var xmlDocument = ajax.responseXML;//进⾏dom操作解析xml//解析xml数据var citys = xmlDocument.getElementsByTagName("city");for(var i = 0; i< citys.length;i++){//获取xml中的值 :不能⽤innerHTML,要⽤nodeValuevar city = citys[i].firstChild.nodeValue;//创建optionvar optElement = document.createElement("option");optElement.innerHTML = city;//获取cityvar cityElems = document.getElementById("cityID");cityElems.appendChild(optElement);}}}}}}</script></html>然后在后台ProvinceServlet中通过GET⽅式获取请求,将返回的数据以O(输出)流的⽅式发送出去,上⾯代码的ajax.responseXML获取输出的数据,并进⾏dom操作public class ProvinceServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");String province = req.getParameter("province");//重新编码province = new String(province.getBytes("ISO-8859-1"),"utf-8");//设置格式为xmlresp.setContentType("text/xml;charset=utf-8");//获取字符输出流PrintWriter pw = resp.getWriter();//拼接xml头pw.write("<?xml version='1.0' encoding='UTF-8'?>");pw.write("<citys>");if ("湖南".equals(province)) {pw.write("<city>长沙</city>");pw.write("<city>株洲</city>");pw.write("<city>湘潭</city>");pw.write("<city>岳阳</city>");}else if("⼴东".equals(province)){pw.write("<city>⼴州</city>");pw.write("<city>深圳</city>");pw.write("<city>中⼭</city>");}pw.write("</citys>");pw.flush();pw.close();}}运⾏结果如下:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
省市二级联动数据库生成代码(JAVA)来源:开发界数据来源于谷歌地图省市列表(无省、市、区字样)省市列表(带省、市、区)源代码注意:由于我不想把省、市、区这样的字也转换成拼音,如河北省转换为HBS,北京市转换为BJS,我把省、市、区相关字样已删除,但我也保留了原文件,有需要的可以下载。
表结构:[sql] view plaincopyprint?CREATE TABLE IF NOT EXISTS `city` (`id` varchar(50) NOT NULL,`type` varchar(50) NOT NULL,`parent_id` varchar(50) NOT NULL,`name` varchar(50) NOT NULL,`short` varchar(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE IF NOT EXISTS `city` (`id` varchar(50) NOT NULL,`type` varchar(50) NOT NULL,`parent_id` varchar(50) NOT NULL,`name` varchar(50) NOT NULL,`short` varchar(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;具体实现请看以下代码:[java] view plaincopyprint?package com.zxq.pinyin;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class Covert {/*** 汉字转拼音,并将结果保存到省或市的map中* @param words 需要转换的字符串* @param provinceOrCity 省或市的Map*/public static void wordToPinYinSZM(String words, Map<String, String> provinceOrCity) { //调用Pinyin4J的方法//定义拼音输出格式HanyuPinyinOutputFormat hof = new HanyuPinyinOutputFormat();//大写hof.setCaseType(HanyuPinyinCaseType.UPPERCASE);//不包含声调hof.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//u用V表示hof.setVCharType(HanyuPinyinVCharType.WITH_V);//由于只能对单字转换,所以需要把字符串转换为字符数组char[] characters = words.toCharArray();try {//StringBuilder存放结果StringBuilder sb = new StringBuilder();for(int i = 0; i < characters.length; i++) {//调用汉字转拼音核心方法,大家可以看到返回的是一个数组,因为有的汉字有多音字,所以可能返回多个//拼音结果,对此,我只取第一个,pinyinArray[0],这样做不好的地方就是可能有的简拼不准确,例如//“重庆”我得到的是ZQ,zhong qing,这一点有待完善String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(characters[i], hof);//substring(0, 1)则表示只取首字母sb.append(pinyinArray[0].substring(0, 1));}//放入省或市的Map中provinceOrCity.put(words, sb.toString());} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}}/*** @param args*/public static void main(String[] args) {//读取事先定义好的省市文本文件,第一行为省/直辖市,第二行为各地级市File provinceFile = new File("F:\\province_city\\province.txt");//定义保存省、市数据的数据结构。
从里向外看,Map<String, String>保存的是“省=>简拼”这样的数据//如“河北=>HB”。
List里面的Map<String, String>则保存着“市=>简拼”的数据,如“保定=>BD”,而list集合//保存该省下所有市的集合。
最外层的Map就是“省=>各市集合”的关联集合,这样省市关系就确定了。
Map<Map<String, String>, List<Map<String, String>>> provinceCity = new LinkedHashMap<Map<String, String>, List<Map<String, String>>>();try {//定义输入流,可以使用readline()读取一行BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(provinceFile), "UTF-8"));String provinceName = "";while ((provinceName = br.readLine()) != null) { //先读第一行,省的名字//定义保存“省=>简拼”的MapMap<String, String> province = new LinkedHashMap<String, String>();//定义保存“市=>简拼”Map的List集合,结构为[{保定=>BD}, {沧州=>CZ},……]List<Map<String, String>> citiesArray = new ArrayList<Map<String, String>>();//调用汉字转拼音方法wordToPinYinSZM(provinceName.trim(), province);//读取第二行,该省下的所有市区String cityNames = br.readLine();//文件中的每个市区用两个空格格开,所以以两个空格分隔成市区的数组String[] cities = cityNames.split(" ");for(int j = 0; j < cities.length; j++) {//定义保存“市=>简拼”MapMap<String, String> city = new LinkedHashMap<String, String>();String cityName = cities[j].trim();//调用汉字转拼音方法wordToPinYinSZM(cityName, city);//添加到list集合中citiesArray.add(city);}//添加到“省=>市的集合”的Map中provinceCity.put(province, citiesArray);}//调用转换为sql语句的代码convertMapToSql(provinceCity);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 把“省=>市的集合”Map转换为SQL语句* @param provinceCity*/public static void convertMapToSql(Map<Map<String, String>, List<Map<String, String>>> provinceCity) { //获取最外层Map的EntrySet 结构为[{河北=>HB, [{保定=>BD}, {石家庄=>sjz},{……}]},{……}] Set<Entry<Map<String, String>, List<Map<String, String>>>> provinceEnties = provinceCity.entrySet();//获取迭代器Iterator<Entry<Map<String, String>, List<Map<String, String>>>> itPE = provinceEnties.iterator();//定义数据库中,省的ID从1000000开始long provinceId = 1000000;while(itPE.hasNext()) {//获取一个Entry键-值对Entry<Map<String, String>, List<Map<String, String>>> proviceEntry = itPE.next();//Key为省,Value为市的List集合Map<String, String> provinces = proviceEntry.getKey();//获取省份的Entry,结构为[{河北=>HB}, {北京=>BJ}] key为中文,value为简拼Set<Entry<String, String>> proEntries = provinces.entrySet();Iterator<Entry<String, String>> proIt = proEntries.iterator();while(proIt.hasNext()) {Entry<String, String> proEntry = proIt.next();String provinceName = proEntry.getKey();String provincePinYin = proEntry.getValue();//组合sql语句StringBuilder sb = new StringBuilder();//定义的表结构为:id, type, name, short,分别为id,类型(1为1级,如省,2为2级,如市),父ID即市的所属省份, 名字, 简拼sb.append("insert into city values ('");sb.append(provinceId).append("','").append("1','','").append(provinceName).append("', '").append(provincePinYin).append("');");//我没有生成sql文件,而是直接显示在console里面,大家可以直接从里面复制System.out.println(sb.toString());}//获取当前省下所有市区,迭代方法与上面类似,请注意这里面的循环比较多,请大家注意分辨。