09-EasyUI尚硅谷-combobox-省份城市联动+自动搜索功能

数据库:

CREATE TABLE `province` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE `city` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `pro_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

 数据:

  

 

实例1:

前台:

<select id="province" class="easyui-combobox" 
		url="ProvinceServlet?method=findProvinceList" valueField="id" textField="name"></select>

 后台:

ProvinceServlet.java:

package sxt.easyui.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

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

import net.sf.json.JSONArray;

import com.mysql.jdbc.PreparedStatement;

import sxt.easyui.model.Province;
import sxt.easyui.util.DBHelper;

// 省份Servlet
@SuppressWarnings("serial")
public class ProvinceServlet extends HttpServlet {
	
	Connection conn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// 接收方法
		String method = req.getParameter("method");
		// 判断方法
		if (method == null || "".equals(method)) {
			try {
				throw new Exception("请求出错!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		if ("findProvinceList".equals(method)) {
			List<Province> provinceList = this.findProvinceList(req, resp);
			String provinceJsonStr = JSONArray.fromObject(provinceList).toString();
			resp.setContentType("text/html;charset=utf-8");
			PrintWriter writer = resp.getWriter();
			writer.write(provinceJsonStr);
		} else {
			try {
				throw new Exception("请求出错!");
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}

	// 获取省份列表
	private List<Province> findProvinceList(HttpServletRequest req,
			HttpServletResponse resp) {
		conn = DBHelper.getConn();
		String sql = "SELECT * FROM province";
		ps = (PreparedStatement) DBHelper.prepare(conn, sql);
		List<Province> provinceList = new ArrayList<Province>();
		try {
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				Province province = new Province();
				province.setId(rs.getString("id"));
				province.setName(rs.getString("name"));
				provinceList.add(province);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBHelper.close(rs);
			DBHelper.close(ps);
			DBHelper.close(conn);
		}
		return provinceList;
	}

}

效果:

    

 --------------------------------------------------

下面是根据省份获取城市:

前台:

<body>
	<select id="province" class="easyui-combobox" 
			url="ProvinceServlet?method=findProvinceList" valueField="id" textField="name"></select>
	<select id="city" class="easyui-combobox"
			valueField="id" textField="name"></select>
</body>
<script type="text/javascript">
	$(function() {
		$("#province").combobox({
			onSelect: function() {
				var pid = $("#province").combobox("getValue");	// 获取省份的id
				$("#city").combobox("setValue", "")
				$("#city").combobox("reload", "ProvinceServlet?method=findCityListByPid&pid="+pid);
			}
		});
	});
</script>

后台:

package sxt.easyui.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

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

import net.sf.json.JSONArray;

import com.mysql.jdbc.PreparedStatement;

import sxt.easyui.model.City;
import sxt.easyui.model.Province;
import sxt.easyui.util.DBHelper;

// 省份Servlet
@SuppressWarnings("serial")
public class ProvinceServlet extends HttpServlet {
	
	Connection conn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// 接收方法
		String method = req.getParameter("method");
		// 判断方法
		if (method == null || "".equals(method)) {
			try {
				throw new Exception("请求出错!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		if ("findProvinceList".equals(method)) {
			List<Province> provinceList = this.findProvinceList(req, resp);
			String provinceJsonStr = JSONArray.fromObject(provinceList).toString();
			resp.setContentType("text/html;charset=utf-8");
			PrintWriter writer = resp.getWriter();
			writer.write(provinceJsonStr);
		} else if("findCityListByPid".equals(method)) {
			String pid = req.getParameter("pid");
			List<City> cityList = this.findCityListByPid(req, resp, pid);
			String cityJsonStr = JSONArray.fromObject(cityList).toString();
			resp.setContentType("text/html;charset=utf-8");
			PrintWriter writer = resp.getWriter();
			writer.write(cityJsonStr);
		} else {
			try {
				throw new Exception("请求出错!");
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}

	// 根据省份获取城市列表
	private List<City> findCityListByPid(HttpServletRequest req, HttpServletResponse resp, String pid) {
		conn = DBHelper.getConn();
		String sql = "SELECT * FROM city WHERE pro_id = ?";
		ps = (PreparedStatement) DBHelper.prepare(conn, sql);
		List<City> cityList = new ArrayList<City>();
		try {
			ps.setString(1, pid);
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				City city = new City();
				city.setId(rs.getString("id"));
				city.setName(rs.getString("name"));
				cityList.add(city);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBHelper.close(rs);
			DBHelper.close(ps);
			DBHelper.close(conn);
		}
		return cityList;
	}

	// 获取省份列表
	private List<Province> findProvinceList(HttpServletRequest req, HttpServletResponse resp) {
		conn = DBHelper.getConn();
		String sql = "SELECT * FROM province";
		ps = (PreparedStatement) DBHelper.prepare(conn, sql);
		List<Province> provinceList = new ArrayList<Province>();
		try {
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				Province province = new Province();
				province.setId(rs.getString("id"));
				province.setName(rs.getString("name"));
				provinceList.add(province);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBHelper.close(rs);
			DBHelper.close(ps);
			DBHelper.close(conn);
		}
		return provinceList;
	}

}

 效果:

      

--------------------------------------------------------

自动搜索:类似于angularjs中的双向绑定功能

效果:

      

前台:

	<!-- 自动搜索 -->
	<input id="search"/>
		$("#search").combobox({
			mode: "remote",
			url: "UserServlet?method=searchName",
			valueField: "id",
			textField: "username",
			//delay: 1000	// 隔多长时间发送一次请求,默认是200毫秒
		});

后台: q是固定变量

  

	// 自动搜索
	private List<User> findUserListBySearchName(HttpServletRequest req,
			HttpServletResponse resp, String q) {
		List<User> userList = null;
		if (q != null) {
			try {
				userList = new ArrayList<User>();
				Connection conn = DBHelper.getConn();
				String sql = "SELECT * FROM user WHERE username LIKE '%"+q+"%'";
				PreparedStatement ps = (PreparedStatement) DBHelper.prepare(conn, sql);
				ResultSet rs = ps.executeQuery();
				while (rs.next()) {
					String id = rs.getString("id");
					String username = rs.getString("username");
					String password = rs.getString("password");
					String sex = rs.getString("sex");
					String age = String.valueOf(rs.getInt("age"));
					String birthday = rs.getString("birthday");
					String city = rs.getString("city");
					String salary = rs.getString("salary");
					String starttime = rs.getString("starttime");
					String endtime = rs.getString("endtime");
					String description = rs.getString("description");
					
					User user = new User(id, username, password, sex, age, birthday, city, salary, starttime, endtime, description);
					userList.add(user);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return userList;
	}

 

posted @ 2017-07-31 18:18  半生戎马,共话桑麻、  阅读(213)  评论(0)    收藏  举报
levels of contents