Easyui表单之下拉列表的三级联动

Posted xoxobool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Easyui表单之下拉列表的三级联动相关的知识,希望对你有一定的参考价值。

一、实现三级联动需要连接数据库

二、需要JSON数据的解析

三、需要Servlet类与界面相对应值的传递

1. 界面层需要的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 1 JQuery的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.min.js"></script>

<!-- 2 css资源 -->
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/default/easyui.css">

<!-- 3 图标资源 -->
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/icon.css">

<!-- 4 easyui的js包 -->
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.easyui.min.js"></script>

<!-- 5 本地语言  -->
<script type="text/javascript" src="jquery-easyui-1.4.4/locale/easyui-lang-zh_CN.js"></script>
</head>
<body>
这是修改员工的页面
 
<input class="easyui-combobox"data-options="url:‘json/combo.json‘,
valueField:‘id‘,textField:‘text‘,
editable:false">

<br><br>
省:<input id="sheng" class="easyui-combobox" style="width:100px"
data-options="{
url:‘RegionServlet?parentid=0‘,
valueField:‘regionID‘,
textField:‘regionName‘,
onSelect:function(region)
{
    //alert(‘选择了省id=‘+region.regionID);
    $(‘#shi‘).combobox(‘clear‘);// 清除原有项目
    $(‘#quxian‘).combobox(‘clear‘);// 清除原有显示项目
    // 重新加载
    $(‘#shi‘).combobox(‘reload‘,‘RegionServlet?parentid=‘+region.regionID);
    $(‘#quxian‘).combobox(‘reload‘,‘RegionServlet‘); //清理原有下拉项目
    
}
}">
市:<input id="shi" class="easyui-combobox" style="width:100px"
data-options="{
url:‘RegionServlet‘,
valueField:‘regionID‘,
textField:‘regionName‘,
onSelect:function(region)
{
    $(‘#quxian‘).combobox(‘clear‘);// 清除原有项目
    // 重新加载
    $(‘#quxian‘).combobox(‘reload‘,‘RegionServlet?parentid=‘+region.regionID);
}

}">
区县:<input id="quxian" class="easyui-combobox" style="width:100px"
data-options="{
url:‘RegionServlet‘,
valueField:‘regionID‘,
textField:‘regionName‘
}">
</body>
</html>

2. 通过hibernate创建实体类与映射文件

实体类:

package com.hanqi.entity;

// 地区实体类
public class Region {

    // 地区ID
    private String regionID;
    
    // 地区名称
    private String regionName;
        
    // 上级地区ID
    private String parentRegionID;

    public String getRegionID() {
        return regionID;
    }

    public void setRegionID(String regionID) {
        this.regionID = regionID;
    }

    public String getRegionName() {
        return regionName;
    }

    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }

    public String getParentRegionID() {
        return parentRegionID;
    }

    public void setParentRegionID(String parentRegionID) {
        this.parentRegionID = parentRegionID;
    }
    
    
}

3.DAO层代码:

package com.hanqi.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.hanqi.entity.Region;

public class RegionDAO {


    Configuration cfg = null;
    ServiceRegistry sr =null;
    SessionFactory sf =null;
    Session se=null;
    Transaction tr=null;
    public RegionDAO()
    {
        //加载配置文件
        cfg = new Configuration().configure();
        //注册服务
        sr = new StandardServiceRegistryBuilder()
                .applySettings(cfg.getProperties())
                .build();
    }
    // 初始化
    private void init()
      {
          sf=cfg.buildSessionFactory(sr);
          se= sf.openSession();
          tr=se.beginTransaction();
      }
    // 提交和释放
     private void destory()
      {
              tr.commit();
            se.close();
            sf.close();
      }
     
     // 获取数据列表
     
     public List<Region> getList(String parentid)
     {
         
         List<Region> rtn = new ArrayList<Region>();
         
         init();
         
         // 查询数据
         rtn=se.createQuery("from Region where parentRegionID = ?")
                 .setString(0, parentid).list();
         
         destory();
         
         return rtn;
     }
}

4.Service层代码:

package com.hanqi.service;

import java.util.List;

import com.hanqi.dao.RegionDAO;
import com.hanqi.entity.Region;

public class RegionService {
    
    public List<Region> getList(String parentid)
    {
        return new RegionDAO().getList(parentid);
    }

}

5.Servlet层代码:(解析JSON数据的jar包FastJson)

package com.hanqi.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSONArray;
import com.hanqi.entity.Region;
import com.hanqi.service.RegionService;

public class RegionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    
    public RegionServlet() {
        super();
       
    }

    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html");
            
            // 接收参数
            String parentid = request.getParameter("parentid");
            
            if(parentid!=null)
            {
            
            // 读取地区代表
            List<Region> lr = new RegionService().getList(parentid);
            ;
            // 返回JSON格式的数据
            String json = JSONArray.toJSONString(lr);
            
            response.getWriter().write(json);
            }
            else
            {
                response.getWriter().write("[]");
            }
    }

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        doGet(request, response);
    }

}

 

以上是关于Easyui表单之下拉列表的三级联动的主要内容,如果未能解决你的问题,请参考以下文章

c# 求WPF省市区三级联动代码,是从xml中得到省市区数据后添加到三个下拉列表。

三级联动怎么回显 javaweb

JQuery+Ajax实战三级下拉列表联动

职业的三级联动下拉表单选项(jquery写法)

vue+json自定义实现省市区三级联动下拉列表(独立select)

使用combobox下拉列表框实现省 市 县 的三级联动