jquery,从后台查数据,给页面上添加树形。

前台jquery+ajax请求往页面上添加树形的js代码

 1 //传入当前点击节点的id,在后台代码查询出parentid=当前节点id的记录数,从而实现点击当前节点,往后台发送ajax请求,查询出子节点的集合,往父节点下拼接页面
 2 function treeNode(pid){
 3
 4         //如果<li id="pid">标签下的<ul>的长度为1,则说明需要发送ajax请求,往其中添加子节点。如果长度大于1说明添加过了,不用再次发送ajax请求。直接进else中控制样式的显示和隐藏问题
 5           if($("#"+pid).find("ul").length <= 1){
 6           $.ax({
 7                 type:"post",
 8                 url:"<%=request.getContextPath() %>/master/sysGroup_queryFlorGroup.action",
 9                 async:false,
10                 data:{"sysParentId":pid},
11                 dataType:"json",
12                 success:function(resp){
13                 //从后台响应回来数据,获取所有的组信息的json格式的数据
14                     var groups = resp["rows"];
15
16                 //如果查询出来组信息的json数组的长度《=0为空,则说明该节点下,无自己点,不用进行拼接。
17                 if(groups.length>0){
18                     //遍历json数组的信息。拼接页面
19                         for(var i=0;i<groups.length;i++){
20                             var currentId = groups[i].sysGroupId;
21                             //判断子节点是否还有子节点,后台封装数据的时候,封装了一个状态码
22                         if(groups[i].hasChild == "1"){
23                             //pid等于零,是父节点,其余都是父节点下的子节点
24                                 if("0" == pid){//第一次添加父节点
25                                     $("#firstFlorGroup").append("<li id='"+currentId+"'><input type='checkbox' name='box' value='"+currentId+"' /><a onclick=\"treeNode
26
27 ('"+currentId+"')\" id='a"+currentId+"'>"+groups[i].sysGroupName+"</a></li>");
28                                     $("#"+currentId).append("<div class=\"opt\"><a href='javascript:void(0)' onclick=\"updateGroup('"+groups[i].sysGroupId+"');\">编辑
29
30 </a>|<a href='javascript:void(0)' onclick=\"deleteGroup('"+groups[i].sysGroupId+"');\">删除</a></div><div class=\"opt\">"+groups[i].sysUpdateTime+"</div>");
31                                 }else{
32                                     $("#u"+pid).append("<li id='"+currentId+"'><input type='checkbox' name='box' value='"+currentId+"' /><a onclick=\"treeNode
33
34 ('"+currentId+"')\" id='a"+currentId+"'>"+groups[i].sysGroupName+"</a></li>");
35                                     $("#"+currentId).append("<div class=\"opt\"><a href='javascript:void(0)' onclick=\"updateGroup('"+groups[i].sysGroupId+"');\">编辑
36
37 </a>|<a href='javascript:void(0)' onclick=\"deleteGroup('"+groups[i].sysGroupId+"');\">删除</a></div><div class=\"opt\">"+groups[i].sysUpdateTime+"</div>");
38                                 }
39                             //给编辑的超链接添加伪协议
40                                 $("#a"+currentId).attr("href","javascript:void(0)");
41                             //给还有子节点的子节点设置样式,使其变成绿色显示。
42                                 $("#a"+currentId).attr("style","color: green;");
43                             //既然有子节点,就需要往<li>标签下,添加<ul>标签,方便添加子节点的子节点
44                                 $("#"+currentId).append("<ul id='u"+currentId+"'></ul>");
45                             }else{
46                         //无子节点
47                                 if("0" == pid){
48                                     $("#firstFlorGroup").append("<li id='"+currentId+"'><input type='checkbox' name='box' value='"+currentId+"' />"+groups
49
50 [i].sysGroupName+"<div class=\"opt\"><a href='javascript:void(0)' onclick=\"updateGroup('"+groups[i].sysGroupId+"');\">编辑</a>|<a href='javascript:void(0)' onclick=\"deleteGroup('"+groups
51
52 [i].sysGroupId+"');\">删除</a></div><div class=\"opt\">"+groups[i].sysUpdateTime+"</div></li>");
53                                 }else{
54                                     $("#u"+pid).append("<li id='"+currentId+"'><input type='checkbox' name='box' value='"+currentId+"' />"+groups[i].sysGroupName+"<div
55
56 class=\"opt\"><a href='javascript:void(0)' onclick=\"updateGroup('"+groups[i].sysGroupId+"');\">编辑</a>|<a href='javascript:void(0)' onclick=\"deleteGroup('"+groups[i].sysGroupId+"');\">删除
57
58 </a></div><div class=\"opt\">"+groups[i].sysUpdateTime+"</div></li>");
59                                     $("#"+currentId).append("<ul></ul>");
60                                 }
61                             }
62                         }
63                     }
64             }
65         });
66         }else{
67         //当不需要发送ajax请求的时候,点击的时候都是改变其隐藏和显示的样式,实现动态效果
68             if($("#"+pid).find("ul").css("display")=="block"){
69                 $("#"+pid).find("ul").css("display","none");
70             } else {
71                 $("#"+pid).find("ul").css("display","block");
72             }
73         }
74 } 

View Code

ajax请求后台的action

    public String queryFlorGroup(){
        try{
            //生成一个装map的list集合
            List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
            //查询出指定父id的权限集合
            List<SysGroup> list = sysGroupService.queryByPId(parentId);
            //生成一个事件格式的对象
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String updateTime = "";
            //遍历查询出来的权限集合,进行包装数据
            for(SysGroup sysGroup:list){
                int hasChild = 0;
                //统计【遍历出来的权限是否有子权限】
                int num = sysGroupService.countChilds(sysGroup.getSysGroupId());
                if(num>0){
                    hasChild = 1;
                }
                updateTime = sdf.format(sysGroup.getSysUpdateTime());
                Map<String,Object> map = new HashMap<String, Object>();
                map.put("hasChild", hasChild);
                map.put("sysGroupId", sysGroup.getSysGroupId());
                map.put("sysGroupName", sysGroup.getSysGroupName());
                map.put("parentId", sysGroup.getSysParentId());
                map.put("sysUpdateTime", updateTime);
                listMap.add(map);
            }
            jsonObject.put("rows", listMap);
            System.out.println(jsonObject);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            out.print(jsonObject);
            out.close();
        }
        return null;
    }

View Code

 

 

 

通过自己的id,是别人的父id,通过ajax请求+css样式,动态往页面上添加树形。

js+html代码

 1     //加载用户组
 2             function treeNode(pid){
 3                   //判断该节点下是否已经加载了子节点。如果加载,则不执行ajax请求,而是执行else{}中样式的显示和隐藏
 4                 if($("#"+pid).find("ul").length == 0){
 5                   $.ax({
 6                         type:"post",
 7                         url:"<%=request.getContextPath() %>/master/sysGroup_queryFlorGroup.action",
 8                         async:false,
 9                         data:{"parentId":pid},
10                         dataType:"json",
11                         success:function(resp){
12                             var groups = resp["rows"];
13                             if(groups.length>0){
14                                 //如果响应回来的包装有组信息的json数组长度大于零,则遍历
15                                 for(var i=0;i<groups.length;i++){
16                                     currentId = groups[i].sysGroupId;//组的id
17                                     //如果父id不等于0,说明是二级或二级以下的节点
18                                     if("0" != pid){
19                                         //添加一个ul标签,用来装响应回来的json数据的组信息
20                                         $("#"+pid).append("<ul id='u"+pid+"'></ul>");
21                                     }
22                                     //如果该json数据中的组信息,显示其有子节点。添加的时候,同时给节点绑定onclick事件,用于自身调用自身方法,再次发送ajax请求,加载子节点
23                                     if(groups[i].hasChild == "1"){
24                                         if("0" == pid){
25                                             $("#groupTree").append("<li id='"+currentId+"'><a onclick=\"treeNode('"+currentId+"')\" id='a"+currentId+"'><cite></cite></a><a href='<%=request.getContextPath() %>/master/sysGroupRolePower_queryRolesByGroupId.action?groupId="+currentId+"' target='topFrame'>"+groups[i].sysGroupName+"</a><i></i></li>");
26                                         }else{
27                                             $("#u"+pid).append("<li id='"+currentId+"'><a onclick=\"treeNode('"+currentId+"')\" id='a"+currentId+"'><cite></cite></a><a href='<%=request.getContextPath() %>/master/sysGroupRolePower_queryRolesByGroupId.action?groupId="+currentId+"' target='topFrame'>"+groups[i].sysGroupName+"</a><i></i></li>");
28                                         }
29                                         $("#a"+currentId).attr("href","javascript:void(0)");
30                                         $("#a"+currentId).attr("style","color: green;");
31
32                                     }else{
33                                         //显示没有子节点,添加节点时,这里边有一个图标的不同,遮盖总的css样式。不在绑定onclick事件。
34                                         if("0" == pid){
35                                             //初始位置添加
36                                             $("#groupTree").append("<li id='"+currentId+"'><cite></cite><a href='<%=request.getContextPath() %>/master/sysGroupRolePower_queryRolesByGroupId.action?groupId="+currentId+"' target='topFrame'>"+groups[i].sysGroupName+"</a><i></i></li>");
37                                             $("#"+currentId).children("cite").css("background","url(../images/rlist.gif) no-repeat");
38                                         }else{
39                                             //动态添加完成的节点下,添加子节点
40                                             $("#u"+pid).append("<li id='"+currentId+"'><cite></cite><a href='<%=request.getContextPath() %>/master/sysGroupRolePower_queryRolesByGroupId.action?groupId="+currentId+"' target='topFrame'>"+groups[i].sysGroupName+"</a><i></i></li>");
41                                             $("#"+currentId).children("cite").css("background","url(../images/rlist.gif) no-repeat");
42                                         }
43                                     }
44                                 }
45                             }
46                     }
47                 });
48
49                 }else{
50                     //当树形加载完毕后,再次点击,就是控制显示和隐藏,从而实现动态效果
51                     if($("#"+pid).find("ul").css("display")=="block"){
52                         $("#"+pid).find("ul").css("display","none");
53                         $("#a"+pid).children("cite").css("background","url(../images/list.gif) no-repeat");
54                     } else {
55                         $("#"+pid).find("ul").css("display","block");
56                         $("#a"+pid).children("cite").css("background","url(../images/clist.png) no-repeat");
57                     }
58                 }
59             }
60
61             //当页面加载完毕时,首先自动加载父id为0的组的信息,动态添加到页面上
62             $(document).ready(function(){
63                 treeNode(0);
64             });
65
66
67
68
69
70
71
72
73 <body style="background:#f0f9fd;">
74     <div class="lefttop"><span></span>权限分配</div>
75
76     <dl class="leftmenu">
77
78     <dd><div class="title"><span><img src="<%=request.getContextPath() %>/master/images/leftico04.png" /></span>用户组</div>
79     <ul id="groupTree" class="menuson">
80     </ul>
81
82     </dd>
83
84     </dl>
85
86     <script type="text/javascript">
87     $('.tablelist tbody tr:odd').addClass('odd');
88     </script>
89
90
91 </body>

View Code

ajax请求后台的action

/**
     * 根据自动注入的parentId来查出子组,并且返回所查出的子组是否还有子组
    * @Title: queryFlorGroup
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @return
    * @return String    返回类型
    * @author 王兴兴
    * @date 2014-7-1 下午3:21:10
     */

    public String queryFlorGroup(){
        try{

            List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();

            List<SysGroup> list = sysGroupService.queryByPId(parentId);

            for(SysGroup sysGroup:list){
                int hasChild = 0;
                //通过改组的组id,去后台查询改组下是否还有子组
                int num = sysGroupService.countChilds(sysGroup.getSysGroupId());
                if(num>0){
                    hasChild = 1;
                }
                Map<String,Object> map = new HashMap<String, Object>();
                map.put("hasChild", hasChild);
                map.put("sysGroupId", sysGroup.getSysGroupId());
                map.put("sysGroupName", sysGroup.getSysGroupName());
                map.put("parentId", sysGroup.getSysParentId());
                map.put("sysUpdateTime", sysGroup.getSysUpdateTime());
                listMap.add(map);
            }
            jsonObject.put("rows", listMap);
            System.out.println(jsonObject);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            out.print(jsonObject);
            out.close();
        }
        return null;
    }

/**
     * 查询指定用户组下的子用户组个数
    * @Title: countChilds
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param parentId
    * @return
    * @return Integer    返回类型
    * @author 王兴兴
    * @date 2014-6-30 下午4:39:10
     */
    public Integer countChilds(String parentId){
        return groupDao.count("sysParentId", parentId);
    }

/**
     * 统计
    * @Title: count
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param conds
    * @return
    * @return Integer    返回类型
    * @author 郝鹏
    * @date 2014-3-27 下午3:22:18
     */
    public Integer count(String property,Object value){
        Map<String, Object> conds=new HashMap<String, Object>();
        conds.put(property, value);
        return this.count(conds);
    }

/**
     * 统计
    * @Title: count
    * @Description: TODO(这里用一句话描述这个方法的作用)
    * @param conds
    * @return
    * @return Integer    返回类型
    * @author 郝鹏
    * @date 2014-3-27 下午3:22:18
     */
    public Integer count(final Map<String, Object> conds){
        return this.hibernateTemplate.execute(new HibernateCallback<Integer>() {

            public Integer doInHibernate(Session session)
                    throws HibernateException, SQLException {
                if(conds==null || conds.isEmpty()){
                    return null;
                }
                StringBuilder sb=new StringBuilder();
                sb.append("select count(*) from "+entityClass.getName()+" where ");
                //设置条件参数
                Set<String> condKeys=conds.keySet();
                int i=0;
                for(String key:condKeys){
                    String k=key.replaceAll("\\.", "")+"w";
                    sb.append(key+"=:"+k);
                    if(i<condKeys.size()-1){
                        sb.append(" and ");
                    }
                    i++;
                }
                Query q=session.createQuery(sb.toString());

                for(String key:condKeys){
                    String k=key.replaceAll("\\.", "")+"w";
                    q.setParameter(k, conds.get(key));
                }
                Number number=(Number) q.uniqueResult();
                return number.intValue();
            }

        });
    }

View Code

时间: 2024-09-15 18:46:42

jquery,从后台查数据,给页面上添加树形。的相关文章

如何利用Ajax动态实现JSP页面上根据后台不同数据改变页面表格&amp;amp;lt;td&amp;amp;gt;的背景色

问题描述 如何利用Ajax动态实现JSP页面上根据后台不同数据改变页面表格<td>的背景色 如题,我在一个停车场管理系统中,通过页面上每个代表车位的单元格来监控车位的状态,不同的单元格表示不同的车位使用情况,后台的车位状态数据是通过action传过来的一个map,求大神解答或者给个思路 解决方案 每个单元格按照行列给出一个id jquery根据传来的坐标得到id,设置css 解决方案二: 车位位置,这些都不变的.车位增加id配置,服务器返回json数据如{"id1":&qu

json-图片上传返回JSON数据,前台弹出下载保存文件框, 文件里面是JSON数据,页面上没显示图片怎么解决

问题描述 图片上传返回JSON数据,前台弹出下载保存文件框, 文件里面是JSON数据,页面上没显示图片怎么解决 10C @RequestMapping(value = ""kinduploadfile"" method = RequestMethod.POST) public @ResponseBody JSONObject KindUploadFile(HttpServletRequest requestHttpServletResponse response)

extjs-Extjs中store问题,通过id,从后台查数据存入store中,并在panel中显示

问题描述 Extjs中store问题,通过id,从后台查数据存入store中,并在panel中显示 //创建model Ext.regModel('rukuInfos',{ fields:[{name:'id'},{name: 'rukuRemark'},{name:'rukuAcount'},{name:'rukuDateTime'},{name:'rukuId'}] }); //有问题的方法 function showruku(){ var rukustore = Ext.create('E

jquery利用拖拽方式在图片上添加热链接_jquery

本文实例讲述了jquery利用拖拽方式在图片上添加热链接的实现过程,分享给大家供大家参考.具体如下: 运行效果截图如下: 项目的需求,要在一张图片上加不同的链接,比如说,图片是一个套房,里面有沙发,茶几,酒柜,电视柜等,然后在这些物件上加一个超链接,点击后打开相关产品的介绍. 用jquery写了一个在图片添加锚点的功能,实现的原理:一个文本框写入标题,一个文本框写链接,一个添加按钮,一个编辑按钮,当写好内容后点击添中添加,便会在图片的上方出现一个P标签,然后按着鼠标左键拖拽该标签放到相应的地方松

Inno&amp;nbsp;Setup技巧[界面]欢迎页面上添加文字

原文:Inno Setup技巧[界面]欢迎页面上添加文字         本文介绍在"欢迎页面添加文字"的两种方法.   界面预览:   首先可以在[Code]段添加以下代码:   procedure InitializeWizard(); var   LabelDate: Tlabel; begin   WizardForm.WelcomeLabel2.Autosize := true;   LabelDate := Tlabel.Create(WizardForm);   Labe

做了一个ajax在后台查数据, 前台接收转成html赋值给div显示在界面上,返回的数据是对的,赋值过后div值也是对的,显示出来是错的

问题描述 做了一个ajax传文件的,在后台上传成功后,查询数据库的最新数据返回,前台接收转成html赋值给div显示在界面上,div显示的内容是和数据库一样的,在做删除操作完毕后,查询数据返回到前台,返回值是对的,调试时看到给div赋值后div的值也是对的,界面上会显示正确的值后继续运行就跳到别的js里面了,这个时候界面上显示的值就是错的了,代码应该是在赋值操作完毕后就结束整个查询动作,但是不知道什么原因又开始执行别的代码块,对于同步异步这个概念不是很清晰,是不是界面还没来的及显示出来就被别的动

紧接上篇,jQuery调用jsonp,并且在页面上展示

在上篇中提到了spring4.1+支持jsonp的调用,做了个例子,用来在页面上展示jsonp: (js写的丑了点,本人后端出生,前端大侠们轻拍~) 1 var Menu = function () { 2 3 return { 4 getMenuData: function (json) { 5 console.log(json); 6 var data = json.data; 7 var html = ""; 8 for (var i = 0 ; i < data.leng

在PHP站点的页面上添加Facebook评论插件的实例教程_php实例

首先,需要在facebook创建一个APP,创建方法见https://developers.facebook.com/,APP有一项是填写Domain的,这里填写你website的Domain.(APP是绑定domain的,不能乱填) 然后就可以使用facebook comments plugins. 使用facebook comments plugins,可以在页面中插入facebook comments. 生成code方法:https://developers.facebook.com/do

用Json写的数据,页面上显示不出来,急死了

问题描述 我写的代码:第一个文件:Servlet:publicclassJsonServletextendsHttpServlet{publicJsonServlet(){super();}protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UT