非常强大的table根据表头排序,点击表头名称,对其内容排序
js代码:
/**
* 通过表头对表列进行排序
*
* @param sTableID
* 要处理的表ID<table id=''>
* @param iCol
* 字段列id eg: 0 1 2 3 ...
* @param sDataType
* 该字段数据类型 int,float,date 缺省情况下当字符串处理
*/
function orderByName(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
for ( var i = 0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
}
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
aTRs.sort(generateCompareTRs(iCol, sDataType));
}
var oFragment = document.createDocumentFragment();
for ( var j = 0; j < aTRs.length; j++) {
oFragment.appendChild(aTRs[j]);
}
oTBody.appendChild(oFragment);
oTable.sortCol = iCol;
} /**
* 处理排序的字段类型
*
* @param sValue
* 字段值 默认为字符类型即比较ASCII码
* @param sDataType
* 字段类型 对于date只支持格式为mm/dd/yyyy或mmmm dd,yyyy(January 12,2004)
* @return
*/
function convert(sValue, sDataType) {
switch (sDataType) {
case "int" :
return parseInt(sValue);
case "float" :
return parseFloat(sValue);
case "date" :
return new Date(Date.parse(sValue));
default :
return sValue.toString();
}
} /**
* 比较函数生成器
*
* @param iCol
* 数据行数
* @param sDataType
* 该行的数据类型
* @return
*/
function generateCompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) {
vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if (vValue1 < vValue2) {
return -1;
} else if (vValue1 > vValue2) {
return 1;
} else {
return 0;
}
};
}
在table表中需要排序的列头添加事件,调用orderByName(sTableID, iCol, sDataType)即可.
三个参数第一个是表的id,第二个参数是第几列,第三个参数是类型,不写即为字符型.
注意列头如果不参与排序,放在另一个table中即可.
jsp部分示例代码:
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="import_tab" align="center">
<tbody>
<tr>
<td width="11%" class="borderTh" title="查询名称为空即其没有查询结果">名称(查询)</td>
<td width="6%" class="borderTh" title="经营状态为空表示其没有查询结果">经营状态</td>
<td width="11%" class="borderTh" title="点击可排序;Ctrl+F查找" onclick="orderByName('resultTab',2);">名称(所填企业名)</td>
<td width="10%" class="borderTh" >统一社会信用代码</td>
<td width="7%" class="borderTh" title="点击可排序" onclick="orderByName('resultTab',4,Date);">申请日期</td>
</tr>
</tbody>
</table>
<table id="resultTab" width="100%" border="0" cellpadding="0" cellspacing="0" class="import_tab" align="center">
<tbody>
<c:forEach items="${listItems}" var="wgl" varStatus="num">
<tr>
<td width="11%" class="borderTh" >${wgl.entname}</td>
<td width="6%" class="borderTh">${wgl.entstatus}</td>
<td width="11%" class="borderTh">${wgl.userName}</td>
<td width="10%" class="borderTh">${wgl.appCertificateNum}</td>
<td width="7%" class="borderTh"><fmt:formatDate value="${wgl.appDate}" type="date" dateStyle="long" /></td>
</tr>
</c:forEach>
</tbody>
</table>
如 日期排序的效果,再点击即可转换顺序排序展示

非常强大的table根据表头排序,点击表头名称,对其内容排序的更多相关文章
- js 实现table表格拖拽和点击表头升降序排序
js 实现table表格拖拽和点击表头升降序排序,写的比较乱,用的时候可以把其中的一些模块函数提取出来 样式,由于是可拖拽表格,所以样式 table tr th{cursor:move;} js实现 ...
- JS实现点击表头表格自动排序(含数字、字符串、日期)
这篇文章主要介绍了利用JS如何实现点击表头后表格自动排序,其中包含数字排序.字符串排序以及日期格式的排序,文中给出了完整的示例代码,并做了注释,相信大家都能看懂,感兴趣的朋友们一起来看看吧. < ...
- QT中Qtableview视图表格中点击表头进行排序
用QT写了一个小工具,主要是对Excel中大量的数据进行计算和显示. 写了有一段时间,然后断断续续的做一些修改和完善. 因为要显示的数据有多列,很自然的会想到要能够对显示的数据进行排序.如果直接操作m ...
- CList 点击表头排序 (3)两种排序的第二种
在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2 ...
- CList 点击表头排序 (2)两种排序方法中其中一种
上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITE ...
- CList 点击表头排序 (1)SortItems函数
点击表头排序整体的思路都是去 CListCtrl类中的方法SortItems去实现 CListCtrl::SortItems的原型是: BOOL SortItems( PFNLVCOMPARE pfn ...
- easyui datagrid 点击表头的事件
在用datagrid的时候我们可能要用到点击表头来触发一个function,这里有个简单的例子. 首先你得有个能用的datagrid. <div> <table id=&quo ...
- hashmap先按照value从大到小排序,value相等时按照key从小到大排序
hashmap先按照value从大到小排序,value相等时按照key从小到大排序. [2]是从小到大排序,在[2]代码基础上交换o1,o2位置即可. 代码中用到[1]中提到的在value相等时再比较 ...
- 页面内容排序插件jSort的使用
当页面列表内容很多的时候,我们可能需要将内容按照某个方式进行排序,比如按照字母或者大小等排序.本文将使用排序插件jSort来对页面内容进行排序. jSort插件可以对页面任何内容进行排序(ta ...
随机推荐
- QProcess怎么实时的读到output的信息
在Qt里想与子程序通信, 一般都会用到QProcess这个类, 而且手册里也提到了很多通信的方法, 比如手册里的"Communicating via Channels". 我也不例 ...
- MATLAB基础知识之内存映射
如果我们的文件太大而不能一次性加载进内存,我们可以创建一个memmapfile对象,这样可以将原始数据当做数组一样来访问,并且同样的通过下标访问数据. 用MNIST数据()举个例子: [Xtrain, ...
- 推荐Python Web开发测试驱动方法
http://www.cnblogs.com/dkblog/archive/2013/06/14/3135914.html推荐 本人买的时候,京东打8.5折,现在降价啦,本书涵盖啦Django.Sel ...
- extjs4 各种怪异问题
用extjs4 已经有一段时间了,过去开发的时候用过extjs2.2 因为放下了两年所有很多东西记得不是很清楚了,现在又直接使用4 突然发现这个世界变得太快连代码都变得这么快,大部分东西都完全不一样了 ...
- hud 5876 2016 ACM/ICPC Asia Regional Dalian Online
题意:给一个图 给定一个点s 求补图中s点到达各个点的最短路 思路:从s点开始bfs 在图中与s点有连接的都是在补图中不能直接到达的点 反之在补图中都是可以直接到达的点 由此bfs ((( 诡异的写法 ...
- USACO翻译:USACO 2014 JAN三题(1)
USACO 2014 JAN 一.题目概览 中文题目名称 滑雪场设计 滑雪降速 滑雪场评级 英文题目名称 skidesign slowdown skilevel 可执行文件名 skidesign sl ...
- MVC原理
C代表Controller,负责用户界面和业务逻辑层的通信控制,一方面解释来自用户界面的输入,识别用户动作(如点击按钮等),调用相应Model中的方法, 另一方面处理来自Model的事件和返回的 ...
- Mysql5.6.17 zip版本安装
1.把 mysql解压到自定义 D:\mysql-5.6.17-W642.我的电脑--属性--高级--环境变量--系统变量--新建系统环境变量 变量名:MYSQL_HOME 变 ...
- 视觉机器学习读书笔记--------BP学习
反向传播算法(Back-Propagtion Algorithm)即BP学习属于监督式学习算法,是非常重要的一种人工神经网络学习方法,常被用来训练前馈型多层感知器神经网络. 一.BP学习原理 1.前馈 ...
- mssql java 运行
public void rlgy() throws IOException { Statement sql; ResultSet rs; String driverName = "com.m ...