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

简介: html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图:     运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接中的option字符串。

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

 

相关文章
|
3月前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
本文介绍了Twaver HTML5中数据的批量加载方法,通过使用`box.startBatch()`可以在大量数据加载时提高性能。文章通过示例代码展示了如何在React组件中使用批量加载功能,以减少界面重绘次数并提升效率。
59 2
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
49 1
|
20天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
44 7
|
1月前
html页面点击按钮实现页面跳转功能
html页面点击按钮实现页面跳转
58 11
|
19天前
太便利了 !通义灵码方便生成html页面
太便利了 !通义灵码方便生成html页面
43 0
|
1月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
50 2
|
1月前
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
113 1
|
27天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
36 0
|
2月前
|
移动开发 前端开发 JavaScript
【HTML】HTML页面和常见标签
【HTML】HTML页面和常见标签
42 1
|
3月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
53 6