JS:
/转换器,将列的字段类型转换为可以排序的类型:String,int,float
function convert(sValue, sDataType) { //(值,类型(int ,date ,float,String))
switch(sDataType) { //选择类型
case "int":
return parseInt(sValue); //返回int型
case "float":
return parseFloat(sValue); //返回float型
case "date":
return new Date(Date.parse(sValue)); //返回date型(日期)
default:
return sValue.toString(); //转换为字符串
}
}
//排序函数产生器,iCol表示列索引,sDataType表示该列的数据类型
function generateCompareTRs(iCol, sDataType) { //类型索引,类型
return function compareTRs(oTR1, oTR2) {
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if (vValue1 > vValue2) {
return -1;
} else if (vValue1 < vValue2) {
return 1;
} else {
return 0;
}
};
}
//排序方法
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
if(oTable.rows.length<2){
return false;
}
var oTBody = oTable.tBodies[1];
var colDataRows = oTBody.getElementsByTagName('tr')[0].row;;
alert(colDataRows.innerHTML);
var aTRs = new Array;
//将所有列放入数组
for (var i=0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
}
//判断最后一次排序的列是否与现在要进行排序的列相同,是的话,直接使用reverse()逆序
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
//使用数组的sort方法,传进排序函数
aTRs.sort(generateCompareTRs(iCol, sDataType));
}
var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++) {
oFragment.appendChild(aTRs[i]);
}
oTBody.appendChild(oFragment);
//记录最后一次排序的列索引
oTable.sortCol = iCol;
}
TBODY:
<tbody>
<s:iterator value="#reportMapList" status="st">
<tr <s:if test="#st.odd">class="info"</s:if><s:else>class="warning"</s:else>>
<td style="text-align: center;"><s:property value='sdate' /></td>
<td style="text-align: center;font-size:12px;" >
<a onclick="showDetail(<s:property value='adid' />,<s:property value='sdate' />)" style="cursor: pointer;" ><s:property value='adname' /></a>
</td>
<td style="text-align: center;"><s:property value='pushu' /></td>
<td style="text-align: center;"><s:property value='djsu' /></td>
<td style="text-align: center;"><s:property value='xzcgu' /></td>
<td style="text-align: center;"><s:property value='xzsbu' /></td>
<td style="text-align: center;"><s:property value='azsu' /></td>
<td style="text-align: center;"><s:property value='md5u' /></td>
<td style="text-align: center;"><s:property value='xzsu' /></td>
<td style="text-align: center;"><s:property value='llqdku' /></td>
<td style="text-align: center;"><s:property value='zjdku' /></td>
<td style="text-align: center;"><s:property value='bmbppu' /></td>
<td style="text-align: center;"><s:property value='yhqxu' /></td>
</tr>
<tr id="operations_reportAd_reportAdList_table_tr_<s:property value='adid' />_<s:property value='sdate' />" style="display: none;">
<td colspan="13" >
<input type="hidden" value="0" id="operations_reportAd_reportAdList_table_tr_<s:property value='adid' />_<s:property value='sdate' />_hidden">
<div class="container" style="width:95%;padding-top:20px;padding-bottom:25px;">
<table class="table table-bordered table-condensed table-hover" style="font-size:12px;">
<thead>
<tr>
<th>日期</th>
<th>广告词标题</th>
<th>广告形式</th>
<th>PUSH</th>
<th>点击数</th>
<th>下载成功数</th>
<th>下载失败数</th>
<th>安装数</th>
<th>MD5错误数</th>
<th>卸载数</th>
<th>浏览器打开</th>
<th>直接打开</th>
<th>包名错误数</th>
<th>用户取消数</th>
</tr>
</thead>
<tbody id="operations_reportAd_reportAdList_table_tr_<s:property value='adid' />_<s:property value='sdate' />_table_tbody">
</tbody>
</table>
</div>
</td>
</tr>
</s:iterator>
</tbody>
排序的行:
<tr>
<th width="5%" onClick="sortTable('operations_strategies_forciblyAdd_table',0,'int')">日期</th>
<th width="13%">广告</th>
<th width="7%" onClick="sortTable('operations_strategies_forciblyAdd_table',2,'int')">PUSH</th