zoukankan      html  css  js  c++  java
  • html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)

    html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)

    效果图:

    运行原理和技术:

    当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select></select>中的option字符串。让后将字符串响应回来,动态添加到<select>中。其中的字符串中包含了后台的数据。

    页面js代码:

     1 <script type="text/javascript">
     2     //加载部门
     3     function loadSysGroup(){
     4         var groups=document.getElementById("selectObj");
     5             if(groups == null ){
     6                 return;
     7             }
     8             $.ajax({
     9                 type:"POST",
    10                 url:"<%=request.getContextPath() %>"+"/master/sysGroup_getOptions.action",
    11                 dataType:"json",
    12                 success:function(data){
    13                     var options=data["options"];
    14                     groups.innerHTML="<option value='0'>--请选择--</option>"+options;
    15                     
    16                 }
    17             });
    18     }
    19     
    20     //当页面加载完成后,加载部门
    21     $(document).ready(function(){
    22         loadSysGroup();
    23     });
    24 </script>
    25 
    26  <li><label>所属部门</label><select id="selectObj" name="sysGroupId"> </select></li>
    View Code

    后台action和sercive方法(省去dao层查数据的方法,主要是体现加工字符串)

      1     /**action 层
      2      * ajax查询出所有的部门信息
      3     * @Title: ajaxQueryGroup 
      4     * @Description: TODO(这里用一句话描述这个方法的作用) 
      5     * @return
      6     * @return String    返回类型 
      7     * @author 尚晓飞
      8     * @date 2014-9-4 上午11:36:15
      9      */
     10     public String ajaxQueryGroup(){
     11     
     12         try {
     13             
     14             String sbString=sysUserService.findQueryGroup();
     15             jsonObject.put("options", sbString);
     16             
     17         } catch (Exception e) {
     18             // TODO: handle exception
     19             e.printStackTrace();
     20             return "error";
     21         }finally{
     22             out.print(jsonObject);
     23             out.close();
     24         }
     25         
     26         return null;
     27     }
     28     
     29 
     30 /**service层的加工数据
     31      * 加载出组
     32     * @Title: findQueryGroup 
     33     * @Description: TODO(这里用一句话描述这个方法的作用)
     34     * @author 尚晓飞
     35     * @date 2014-9-25 上午11:38:16
     36     * @return 
     37     * @see org.ledger.service.SysUserService#findQueryGroup()
     38      */
     39     @Override
     40     public String findQueryGroup() {
     41         // TODO Auto-generated method stub
     42         StringBuffer str=new StringBuffer();
     43         //院属单位institute_unit  非院属单位research_center
     44         //第一步拼接院属单位
     45         str.append("<optgroup label="院属单位">");//optgroup是页面分类,无值。
     46         MyClass myClass=new MyClass();
     47         myClass.handleSb("institute_unit", 0);//算是一个父id
     48         str.append(myClass.sb.toString());
     49         str.append("</optgroup>");
     50         
     51         //第二步拼接非院属单位
     52         str.append("<optgroup label="非院属单位">");
     53         MyClass myClass2=new MyClass();
     54         myClass2.handleSb("research_center", 0);
     55         str.append(myClass2.sb.toString());
     56         str.append("</optgroup>");
     57         
     58         return str.toString();
     59     }
     60 
     61     /**
     62      * 内部类(加工数据的主要)递归
     63     * @ClassName: myClass 
     64     * @Description: TODO(这里用一句话描述这个类的作用) 
     65     * @author 尚晓飞
     66     * @date 2014-9-25 上午11:46:34 
     67     *本示例,第一级没有加标示,数据只有两级,如果后台数据有多个级别的话,则会显示层次关系。掌握思想
     68      */
     69     class MyClass{
     70         StringBuffer sb=new StringBuffer();
     71         
     72         //拼接内容
     73         public void handleSb(String unitType,Integer num){
     74             //根据父id查询出符合条件的集合(父子关系,在数据库表中,父的主键id 是子的父级id字段的值)
     75             List<SysGroup> listGroups=sysGroupService.queryGroupsByType(unitType);
     76             //如果不为空,则进行拼接加工字符串
     77             if(listGroups!=null&&listGroups.size()>0){
     78                 int m=0;//用来记录循环的次数
     79                 num++;//用来记录运行该方法的次数
     80                 
     81                 for(int i=0;i<listGroups.size();i++){
     82                     sb.append("<option value=""+listGroups.get(i).getSysGroupId()+"">");
     83                     
     84                     //决定位置
     85                     //一次递归说明是一个等级,则需要层次分明,则进行加空格,至于加多少,用递归次数决定,从而显示出层次感
     86                     for(int j=1;j<num;j++){
     87                         sb.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
     88                     }
     89                     
     90                     //决定前边装饰的符号
     91                     if(num!=1){
     92                         if(m<(listGroups.size()-1)){
     93                             //说明循环没有到最后一次
     94                             sb.append("&nbsp;&nbsp;┠&nbsp;&nbsp;");
     95                         }else {
     96                             sb.append("&nbsp;&nbsp;┖&nbsp;&nbsp;");
     97                         }
     98                     }else {
     99                         sb.append("&nbsp;&nbsp;");
    100                     }
    101                     
    102                     //添加名字
    103                     sb.append(listGroups.get(i).getSysGroupName());
    104                     sb.append("</option>");
    105                     //循环一次了,循环次数的标示自增1
    106                     m++;
    107                     
    108                     //递归。用于添加当前组的子组(如果有,则sb会添加,如果没有,该方法运行一下,进入当前层的下一次循环)
    109                     handleSb(listGroups.get(i).getSysGroupId(), num);
    110                 }
    111                 
    112             }
    113         }
    114         
    115     }
    View Code
  • 相关阅读:
    HTML DOM教程 14HTML DOM Document 对象
    HTML DOM教程 19HTML DOM Button 对象
    HTML DOM教程 22HTML DOM Form 对象
    HTML DOM教程 16HTML DOM Area 对象
    ubuntu 11.04 问题 小结
    VC6.0的 错误解决办法 小结
    boot.img的解包与打包
    shell里 截取字符串
    从零 使用vc
    Imagemagick 对图片 大小 和 格式的 调整
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/3992677.html
Copyright © 2011-2022 走看看