最近做了一个树状的下拉列表,在这里记录一下,以后可以直接使用
项目中的树状下拉列表是用来选择人员用的,具体实现展示如下:
先说一说功能,左边的人员数是提供选人的,当点击中间的按钮,选中的人员会直接移到右边,如果要删除已选中的人员,只需要双击右边人的姓名即可,点击确定进行集体的业务逻辑操作,一般就是新增人员到某一个表中。
我们再来看看这个DIV的具体代码,由于项目中在多个地方都使用到了这个人员树,所以我把这个DIV抽象出来当作一个公共的jsp页面。如需调用,只需要include这个jsp即可
userTree.jsp:
<%@ page contentType="text/html;charset=utf-8"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="sino" tagdir="/WEB-INF/tags"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <!--弹出窗口,人员树必要--> <link href="${ctx}/static/lib/jquery-easyui/themes/default/easyui.css" rel="external nofollow" rel="external nofollow" type="text/css" rel="stylesheet" /> <script src="/UploadFiles/2021-04-02/jquery.easyui.min.js">下面再来看看java后台是如何来查找这个树的,附上后台代码
//选择评估人-树形结构 @RequestMapping(value = "chooseAssessorTree")//这里不要指定请求方式 public void chooseAssessorTree(HttpServletRequest req,HttpServletResponse res){ //每次点击节点的时候会传入一个节点ID值<br data-filtered="filtered"> String id = req.getParameter("id"); //第一次加载树时选择的区域 String groupId = req.getParameter("groupId"); List<Map<String,Object list=userService.queryJSAssessor(id,groupId); BuildJSON.printToClient(req, res, arrayBuilder(list)); } //获得树值 private JSONArray arrayBuilder(List<Map<String,Object list) { JSONArray arr = new JSONArray(); if (list != null && list.size() > 0) { for (int i=0;i<list.size();i++) { JSONObject obj = new JSONObject(); Map map=list.get(i); String userImg=map.get("userImg").toString(); if (userImg.equals("1")) {//表示到了叶子节点,选择出人 obj.put("id", map.get("loginName")); obj.put("text", map.get("displayName")); obj.put("state", "open"); //obj.put("iconCls", "icon-user2-gj"); }else{ obj.put("id", map.get("groupId")); obj.put("text", map.get("groupName")); obj.put("state", "closed"); } arr.add(obj); } } return arr; }dao查询方法
/**查询树结构的人员以及部门数据 * @param parentGroupId * @param groupId 第一次加载树查询的 区域 例如是成都分公司,则查询出成都分公司下面的部门以及人员 * @return */ List<Map<String, Object queryJSAssessor(@Param("parentGroupId") String parentGroupId, @Param("groupId")String groupId);对应的xml
<select id="queryJSAssessor" resultType="Map" parameterType="String"> SELECT e.loginName, e.displayName, e.groupId, e.groupCode, e.groupName, e.disOrder, e.userImg FROM (SELECT s.loginName,s.displayName,s.groupId,s.groupCode,s.groupName,s.disOrder,s.userImg FROM (SELECT '0' loginName, '0' displayName, fg.ID groupId, fg.CODE groupCode, fg.NAME groupName, fg.DISPLAY_ORDER disOrder, isnull((select count(id) FROM FND_GROUP where PARENT_ID=fg.ID),0) groupLeaf, (select COUNT(1) from FND_USER_GROUP fug, FND_USER fu where fug.USER_ID = fu.ID and fug.GROUP_ID = fg.ID) userLeaf, 0 userImg FROM FND_GROUP fg WHERE fg.ENABLE_FLAG = 'Y' <if test="parentGroupId != null and '' != parentGroupId"> AND fg.PARENT_ID = #{parentGroupId} </if> <if test="parentGroupId == null or '' == parentGroupId"> <if test="groupId!=null and '' !=groupId"> AND fg.PARENT_ID = #{groupId} </if> <if test="groupId==null or ''==groupId"> AND fg.GROUP_LEVEL = 0 </if> </if> )s WHERE s.groupLeaf>0 OR s.userLeaf>0 UNION ALL SELECT fu.LOGIN_NAME loginName, fu.DISPLAY_NAME displayName, fg.ID groupId, fg.CODE groupCode, fg.NAME groupName, fg.DISPLAY_ORDER disOrder, 1 userImg FROM FND_USER fu LEFT JOIN FND_USER_GROUP fug ON fu.ID=fug.USER_ID LEFT JOIN FND_GROUP fg ON fug.GROUP_ID=fg.ID WHERE fu.ENABLE_FLAG = 'Y' AND fug.PRIMARY_FLAG='Y' AND fg.NAME!='' AND fu.LOGIN_NAME!='' AND fu.DISPLAY_NAME!='' AND fu.MOBILE!='' <if test="parentGroupId != null and '' != parentGroupId"> AND fug.GROUP_ID = #{parentGroupId} </if> <if test="parentGroupId == null or '' == parentGroupId"> <if test="groupId!=null and '' !=groupId"> AND fug.GROUP_ID = #{groupId} </if> <if test="groupId==null or ''==groupId"> AND fg.GROUP_LEVEL = 0 </if> </if> )e ORDER BY userImg, CAST(disOrder AS int) </select>最后再附上一个使用实例的 jsp
<%-- Created by IntelliJ IDEA. User: zht Date: 2017/7/18 Time: 20:36 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=utf-8" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib prefix="sino" tagdir="/WEB-INF/tags" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <c:set var="ctx" value="${pageContext.request.contextPath}"/> <!DOCTYPE html> <html> <head> <title>专项评估 > 任务分发</title> <script src="/UploadFiles/2021-04-02/commonDialog.js">总结
以上所述是小编给大家介绍的EasyUI创建人员树的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!