点击表头小图标实现排序
?
集智数据平台的报表中的排序效果是多种多样的,先前已经有过很多点击报表头实现排序的例子,这里我们再介绍一个,在报表头上引入小图标(向上、向下的箭头)来点击,实现字段的排序效果。
?
实现效果图:(模拟数据)
?
升序:
?
?
降序:
?
?
制作方法:
?
1、??在Img文件夹中放所需小图标,如下:
?
?
2、??在展现报表的JSP上加入一段引入JS脚本的代码,如下:
?
?
3、??在此JSP上引入img文件夹中的小图标,代码如下:
?
.row-up{background-image:url(’../img/up.png’);background-position:center right;background-repeat:no-repeat; border:1px solid #D4D4D4; font-weight:bold;}
?
.row-down{background-image:url(’../img/down.png’);background-position:center right;background-repeat:no-repeat; border:1px solid #D4D4D4; font-weight:bold;}
?
4、在report_sort.js脚本上用函数实现排序和点击表头排序,代码如下:
?
//添加排序函数
?
???????? $.fn.sort = function(fun){?
?
?????????????????? var d = this;
?
?????????????????? var dom = this.find(’tr:gt(0)’);
?
?????????????????? dom.each(function(i){?
?
?????????????????? ?? dom.each(function(j){?
?
?????????????????? ?????? if(j<=i){?
?
?????????????????? ????????? return true;?
?
?????????????????? ?????? }?
?
?????????????????? ?????? var dom1 = dom.eq(i);
?
?????????????????? ?????? var dom2 = dom.eq(j);
?
?????????????????? ?????? if(fun(dom1,dom2)){?
?
?????????????????? ????????? dom1.before(dom2);?
?
?????????????????? ????????? dom = d.find(’tr:gt(0)’);
?
?????????????????? ?????? }?
?
?????????????????? ?? })?
?
?????????????????? })?
?
???????? }?
?
???????? // 设置点击表头排序
?
???????? $(function(){?
?
?????????????????? $(’#report1 tr:nth-child(1)’).find(’td’).each(function(i){?
?
?????????????????? ?? $(this).toggle(function(){?
?
?????????????????? ?? ? ??$(this).parent().parent().sort(function(dom1,dom2){?
?
?????????????????? ?????????? var value1 = parseInt(dom1.find(’td:eq(’+i+’)').text());?
?
?????????????????? ???? ??????var value2 = parseInt(dom2.find(’td:eq(’+i+’)').text());?
?
?????????????????? ?????????? return value1<value2;?
?
?????????????????? ?????? })
?
?????????????????? ?????? init_table();
?
?????????????????? ?????? $(this).addClass(’row-down’);
?
?????????????????? ?? },function(){?
?
?????????????????? ?????? $(this).parent().parent().sort(function(dom1,dom2){?
?
?????????????????? ?????????? var value1 = parseInt(dom1.find(’td:eq(’+i+’)').text());?
?
?????????????????? ?????????? var value2 = parseInt(dom2.find(’td:eq(’+i+’)').text());?
?
?????????????????? ?????????? return value1>value2;
?
?????????????????? ?????? })
?
?????????????????? ?????? init_table();
?
?????????????????? ?????? $(this).addClass(’row-up’);
?
?????????????????? ?? })
?
?????????????????? })?
?
???????? })
?
?
更多了解各种复杂问题的处理,可以参考:灵活订阅和调度,丰富的图表展现导出打印;几十种静动态统计图和自定义功能满足各种图表展示需求。