我正在使用DataTables(jQuery的Table插件)作为我网页设计的工具。但是我遇到了一个问题,因为我想按部分值对列进行排序。
例如,有一个名为“Speaker”的列,其值为“Prof。Lin”,“Yu博士”,“陈教授”等。对列进行排序时,顺序为:
1.“余博士”
2.“陈教授”
3.“林教授”。
我想用他们的名字而不是第一个字母排序,这意味着排序为:
1.“陈教授”
2.“林教授”
3.“余博士”
另一个例子是“平均(5%偏差)”栏,其值为“78.0(-2.5~2.5)”,“90.5(-1.5~1.5)”,“130.0(-3.0~3.0)”,依此类推。对列进行排序时,顺序为:
1.“130.0(-3.0~3.0)”
2.“78.0(-2.5~2.5)”
3.“90.5(-1.5~1.5)”。
我想按它们的平均值而不是第一个字母排序(DataTable认为列值是字符串而不是浮点数),这意味着排序为:
1.“78.0(-2.5~2.5)”
2.“90.5(-1.5~1.5)”
3.“130.0(-3.0~3.0)”
在我的数据库中,有两列用于存储数据,例如“title”和“forst_name”,“average”和“bias”。因此,很容易将<td></td>
标记中的两个部分分开
是否可以使用DataTables按部分值对列进行排序?
答案 0 :(得分:1)
我为Title
排序做了sample code。您可以完成Average
列的其余部分。
<table id="report">
<thead>
<tr>
<th>Title</th>
</tr>
</thead>
<tbody>
<tr>
<td>Dr. Yu</td>
</tr>
<tr>
<td>Prof. Chen</td>
</tr>
<tr>
<td>Prof. Lin</td>
</tr>
</tbody>
</table>
$(document).ready(function () {
function getValue(titleValue) {
return titleValue.replace(/^Prof\.\s+|^Dr\.\s+/g, '');
}
jQuery.fn.dataTableExt.oSort['title-asc'] = function (a, b) {
var x = getValue(a);
var y = getValue(b);
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};
jQuery.fn.dataTableExt.oSort['title-desc'] = function (a, b) {
var x = getValue(a);
var y = getValue(b);
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};
$('#report').dataTable({"aoColumns": [
{ "sType": "title" }
]});
});