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

 

相关文章
|
1月前
使用HTML编写注册页面
使用HTML编写注册页面
13 1
|
2月前
|
移动开发 HTML5
html5初音未来减压页面源码
A Mainland China friendly and independent version extracted from https://aidn.jp/mikutap
74 2
|
5天前
|
移动开发 前端开发 JavaScript
【专栏:HTML与CSS实战项目篇】使用HTML5与CSS3制作一个动态表单验证页面
【4月更文挑战第30天】本文介绍了使用HTML5和CSS3创建动态表单验证页面的方法。首先,简述HTML5用于构建网页内容,CSS3用于描述样式。接着,分四步展示实现过程:1) 设计包含输入框和提示信息的表单结构;2) 使用CSS3创建样式,增强视觉效果;3) 使用JavaScript监听输入事件,动态验证表单并显示错误信息;4) 测试和调试确保跨平台兼容性。通过学习,开发者能掌握创建带验证功能的表单,提升用户体验。
|
5天前
|
前端开发 测试技术 UED
【专栏:HTML 与 CSS 实战项目篇】实现一个在线产品展示页面
【4月更文挑战第30天】本文介绍了使用HTML和CSS创建吸引人的在线产品展示页面的实战步骤,包括页面设计规划、HTML结构搭建、CSS样式设计、具体页面实现、交互效果添加、优化与提升。通过简洁布局、产品列表和详情页设计,实现易用且具吸引力的展示效果。优化图片和代码,提升性能,以助企业在数字时代脱颖而出。
|
5天前
|
前端开发 JavaScript UED
【专栏:HTML基础篇】HTML列表与表格:展示数据的两种方式
【4月更文挑战第30天】本文探讨了HTML中的列表和表格两种元素在网页设计中的重要性。无序列表(`&lt;ul&gt;`)和有序列表(`&lt;ol&gt;`)用于呈现相关项目,前者常用于导航菜单,后者适合有序信息。表格(`&lt;table&gt;`)用于展示结构化数据,通过`&lt;tr&gt;`、`&lt;td&gt;`和`&lt;th&gt;`定义行和单元格。尽管简单,列表和表格在内容呈现和用户体验上起着关键作用。然而,响应式设计趋势下,表格可能被更灵活的布局替代,复杂数据展示则可借助JavaScript库提升交互性。正确使用这些基础元素能有效组织信息,创建优质网页。
|
10天前
html_ifream与父级窗口之间的数据传递(window和document)
html_ifream与父级窗口之间的数据传递(window和document)
13 0
|
16天前
|
数据采集 前端开发 网络协议
如何使用代理IP通过HTML和CSS采集数据
如何使用代理IP通过HTML和CSS采集数据
|
16天前
|
数据采集 XML 数据挖掘
使用Python打造爬虫程序之HTML解析大揭秘:轻松提取网页数据
【4月更文挑战第19天】本文介绍了HTML解析在爬虫技术中的重要性,并通过Python的BeautifulSoup库展示了如何解析和提取数据。文章涵盖了HTML文档结构、使用BeautifulSoup的基本方法,如`find_all()`、选择器(标签、类、ID选择器)以及提取文本、属性和链接。此外,还讨论了遍历和处理嵌套元素的技巧。
|
16天前
|
机器人
机器人飞船404页面模板HTML源码
机器人飞船404页面模板HTML源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面
25 5
机器人飞船404页面模板HTML源码
|
17天前
页面渲染效果图(樱花飘落).html(网上收集 4)
页面渲染效果图(樱花飘落).html(网上收集 4)
页面渲染效果图(樱花飘落).html(网上收集 4)