java三级级联和(java三级联动实现)

  • 1、java三级级联问题 主要帮我分析一下如何从数据库中取值 和分析一下这个js代码
  • 2、java三级级联问题
  • 3、NetBeans IDE 6.8 JAVA Swing控件三级联动下拉列表怎么写?
  • 4、三级级联是什么意思
  • 5、三级联动怎么回显 javaweb

在你选择下拉框的时,先执行function ddl_Clear(ddl_name)这个方法,清空name=”big”所有项。

然后清空littl中所有项

之后获取数据填充littl;

看了你的代码,你的数据源,也就是下拉框的值应该不是这段代码里拿的,但你JS肯定是取到了。第1个JS中根据bindData去构造出第1个下拉框。其中判断了i是不是0,这里我没看懂,是不是你自己修改了代码,因为if(i ==0)的else里两段代码一样的。(我的理解是如果为0,插入1条空选项或‘全部’选项)。循环结束后,第1个方法设置了第0位的值为默认的选项,即表示第1个下拉框默认选成第1项,再后来调用下面的JS去联动构造第2个下拉框。

第2个下拉框首先接收参数,然后先清空所有的option,然后根据上面方法传下来的参数ddl_data,去构造第2个下拉框,道理同1.

看了下keywords的意思,大概是你的数据源把所有数据都取得了,这里根据keywords去筛选。。。这还不是传统意义的联动到后台取数据再重新构造。 而是笼统的取得所有数据,加上keywors去判断要不要把对应的值塞进下拉框内

还有事这个地方报错么?越看这段越像只是在初始化,难道初始化的时候就报错,还不是下拉改变时候才报?

用else if不行啊,数据库里如果“系部”有30几个,难道你一个个写过去吗?可以用for循环,把系部加入第一个列表然后 对该列表添加监听器 addActionListener 通过该列表.getSelectedItem得到选中的项 然后专业可以写一个类。里面有一个属性是“系部” 当那些个专业的系部属性为 第一个列表中的值的时候把那些专业的“专业名”属性加入第二个列表中 依次类推我给你一个关于省份,城市,和营业网点的3级下拉列表的例子,你稍微修改就可以了

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.List;import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel; @SuppressWarnings(“serial”)

public class Test extends JFrame{

private ListString provinces=new ArrayListString();

private ListCity citys=new ArrayListCity();

private ListBranch branchs=new ArrayListBranch();

private JComboBox provinceBox=new JComboBox();

private JComboBox cityBox=new JComboBox();

private JComboBox branchBox=new JComboBox();

public Test() {

init();

initData();

setBox();

addHandler();

}

public void init(){//初始化GUI界面

JPanel panel=new JPanel();

this.add(panel);

//panel.setLayout(new GridLayout(3,2));

panel.add(new JLabel(“省份:”));

panel.add(provinceBox);

panel.add(new JLabel(“城市:”));

panel.add(cityBox);

panel.add(new JLabel(“营业网点”));

panel.add(branchBox);

}

private void initData(){//初始化省份 城市和营业网点 这些数据实际上应该从数据库里查询

provinces.add(“浙江”);

provinces.add(“广西”);

citys.add(new City(“浙江”,”宁波”));

citys.add(new City(“浙江”,”金华”));

citys.add(new City(“广西”,”桂林”));

citys.add(new City(“广西”,”南宁”));

branchs.add(new Branch(“浙江”,”宁波”, “宁波镇海网点”));

branchs.add(new Branch(“浙江”,”宁波”, “宁波北仑网点”));

branchs.add(new Branch(“浙江”,”金华”, “金华网点1”));

branchs.add(new Branch(“浙江”,”金华”, “金华网点2”));

branchs.add(new Branch(“广西”,”桂林”, “桂林网点1”));

branchs.add(new Branch(“广西”,”桂林”, “桂林网点2”));

branchs.add(new Branch(“广西”,”南宁”, “南宁网点1”));

branchs.add(new Branch(“广西”,”南宁”, “南宁网点2”));

}

private void setBox(){//设置下拉列表里的值

//设置先在各项列表里加入的值

provinceBox.removeAllItems();

cityBox.removeAllItems();

branchBox.removeAllItems();

provinceBox.addItem(“所有”);

cityBox.addItem(“所有”);

branchBox.addItem(“所有”);

for (int i = 0; i provinces.size(); i++) {

provinceBox.addItem(provinces.get(i));

}

for (int i = 0; i citys.size(); i++) {

cityBox.addItem(citys.get(i).getCity());

}

for (int i = 0; i branchs.size(); i++) {

branchBox.addItem(branchs.get(i).getBranch());

}

}

private void addHandler(){//设置3个下拉列表的级联关系

provinceBox.addActionListener(new ActionListener() {

//监听province下拉列表

@Override

public void actionPerformed(ActionEvent e) {

cityBox.removeAllItems();

cityBox.addItem(“所有”);

branchBox.removeAllItems();

branchBox.addItem(“所有”);

String province=provinceBox.getSelectedItem().toString();//得到当前点中的值

//在city下拉列表中 遍历citys,如果citys[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况

if(province.equals(“所有”)){

for (int i = 0; i citys.size(); i++) {

cityBox.addItem(citys.get(i).getCity());

}

}else{

for (int i = 0; i citys.size(); i++) {

if(citys.get(i).getProvince().equals(province)){

cityBox.addItem(citys.get(i).getCity());

}

}

}

//在branch下拉列表中 遍历branchs,如果branchs[i]的省份属性和它相同则添加进去,其中要考虑是所有的特殊情况

if(province.equals(“所有”)){

for (int i = 0; i branchs.size(); i++) {

branchBox.addItem(branchs.get(i).getBranch());

}

}else{

for (int i = 0; i branchs.size(); i++) {

if(branchs.get(i).getProvince().equals(province)){

branchBox.addItem(branchs.get(i).getBranch());

}

}

}

}

});

//监听cityBox下拉列表

cityBox.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

branchBox.removeAllItems();

branchBox.addItem(“所有”);

if(cityBox.getSelectedItem()==null){

return ;

}

String city=cityBox.getSelectedItem().toString();//得到当前点中的值

if(city.equals(“所有”)){//如果是所有,则看省份框中是什么值

if(provinceBox.getSelectedItem().equals(“所有”)){

for (int i = 0; i branchs.size(); i++) {

branchBox.addItem(branchs.get(i).getBranch());

}

}else{

for (int i = 0; i branchs.size(); i++) {

if(branchs.get(i).getProvince().equals(provinceBox.getSelectedItem())){

branchBox.addItem(branchs.get(i).getBranch());

}

}

}

}else{

for (int i = 0; i branchs.size(); i++) {

if(city.equals(branchs.get(i).getCity())){

branchBox.addItem(branchs.get(i).getBranch());

}

}

}

}

});

}

private void showMe(){

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.pack();

}

public static void main(String[] args) {

new Test().showMe();

}

} //下面是要用的2个类

class City{//城市类

private String city;//城市名

private String province;//所属省份

public City() {

// TODO Auto-generated constructor stub

}

public City(String province,String city) {

super();

this.province = province;

this.city = city;

} public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getProvince() {

return province;

}

public void setProvince(String province) {

this.province = province;

}

}

class Branch{//网点类

private String province;//所属省份

private String city;//所属城市

private String branch;//网点名 public Branch(String province, String city, String branch) {

super();

this.province = province;

this.city = city;

this.branch = branch;

}

public String getBranch() {

return branch;

}

public void setBranch(String branch) {

this.branch = branch;

}

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getProvince() {

return province;

}

public void setProvince(String province) {

this.province = province;

}

}

三级级联是一级下面挂了二级,二级下面又挂了三级,就是三级级联.

以省,市,城联动为例:

此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表:

代码如下:

建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为:

$(document).ready(function(){

$.get(“getProvince.do”, function(result){

$(“#showp”).html(result);

});

})

var xmlhttp;

function mysend(str){

$(document).ready(function(){

$(“#show2”).html(“”);

})

var show = document.getElementByIdx_x_x_x_x_x_x_x_x_x(“show”);

show.innerHTML = “”;

var province = document.getElementByIdx_x_x_x_x_x_x_x_x_x(“province”).value;

if(province!=0){

if(window.XMLHttpRequest){

xmlhttp = new XMLHttpRequest();

}else{

xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);

}

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4 xmlhttp.status==200){

show.innerHTML = xmlhttp.responseText;

}

}

var ss = encodeURIComponent(str);

xmlhttp.open(“GET”,”getCity.do?provinceid=”+ss,true);

xmlhttp.send(null);

}

}

function myarea(str){

if(window.XMLHttpRequest){

xmlhttp = new XMLHttpRequest();

}else{

xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);

}

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4 xmlhttp.status==200){

var show2 = document.getElementByIdx_x_x_x_x_x_x_x_x_x(“show2”);

show2.innerHTML = xmlhttp.responseText;

}

}

var ss = encodeURIComponent(str);

xmlhttp.open(“GET”,”getArea.do?cityid=”+ss,true);

xmlhttp.send(null);

}

html页面中的代码为:

所在地

action中的代码为:

package mobi.zhangsheng.jiejia.action;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import org.springframework.stereotype.Controller;

import mobi.zhangsheng.jiejia.domain.Areas;

import mobi.zhangsheng.jiejia.service.AgentsService;

import mobi.zhangsheng.jiejia.service.AreasService;

@Controller

public class ProvinceAction {

private int provinceid;

private int cityid;

@Resource

private AreasService as;

@Resource

private AgentsService ags;

public int getProvinceid() {

return provinceid;

}

public void setProvinceid(int provinceid) {

this.provinceid = provinceid;

}

public int getCityid() {

return cityid;

}

public void setCityid(int cityid) {

this.cityid = cityid;

}

public void getProvince(){

List provinceList = as.getAreasPrvinceList();

HttpServletResponse resp= ServletActionContext.getResponse();

HttpServletRequest request = ServletActionContext.getRequest();

//resp.setContentType(“xml”);

resp.setContentType(“text/html”);

resp.setCharacterEncoding(“utf-8”);

try {

PrintWriter out = resp.getWriter();

out.print(“”);

//out.print(“shanghai”);

} catch (IOException e) {

e.printStackTrace();

}

}

public void getCity(){

List cityList = as.getAreasCityList(provinceid);

HttpServletResponse resp= ServletActionContext.getResponse();

//resp.setContentType(“xml”);

resp.setContentType(“text/html”);

resp.setCharacterEncoding(“utf-8”);

try {

PrintWriter out = resp.getWriter();

out.print(“”);

//out.print(“shanghai”);

} catch (IOException e) {

e.printStackTrace();

}

}

public void getArea(){

List areaList = as.getAreasCityList(cityid);

if(areaList.size()==0){

}else{

HttpServletResponse resp= ServletActionContext.getResponse();

resp.setContentType(“text/html”);

resp.setCharacterEncoding(“utf-8”);

try {

PrintWriter out = resp.getWriter();

out.print(“”);

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

原创文章,作者:QDO1T,如若转载,请注明出处:https://www.506064.com/n/126218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QDO1TQDO1T
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论