我有这个数据表,列出了人。第一列包含一个人的3个属性:<td>[title] [lastName] [firstName]</td>
。
例如,如果数据是:
[
{
"firstName":"Foo",
"lastName":"Bar",
"title":"Z"
},
{
"firstName":"John",
"lastName":"Doe",
"title":"A"
}
];
然后按升序排序时,默认情况下会显示行:
A Doe John
Z Bar Foo
(“Z”之前的“A”)
但是,不是基于整个单元格内容的默认字符串排序,我希望它基于lastName
。在这种情况下,我期望的升序排序是:
Z Bar Foo
A Doe John
(“Doe”之前的“Bar”)
我试着这样做:
var persons = [
{
"firstName":"Foo",
"lastName":"Bar",
"title":"Z"
},
{
"firstName":"John",
"lastName":"Doe",
"title":"A"
}
];
$.fn.dataTableExt.afnSortData["first-column"] = function (oSettings, iColumn) {
return jQuery.map(oSettings.oApi._fnGetTrNodes(oSettings), function (tr, i) {
return persons[i].lastName;
});
};
$("table").dataTable({
"aaData":persons,
"aoColumns":[
{
"sTitle":"First column",
"mData":function (source, type, val) {
return source.title + " " + source.lastName + " " + source.firstName;
},
"sSortDataType":"first-column"
}
]
});
对应的jsFiddle:http://jsfiddle.net/8Gsb3/1/
但是这种自定义排序不起作用 - 它仍然是单元格的第一个字母,即title
答案 0 :(得分:-1)
只是查看你的代码,看来你正在使用数据表,为什么不使用datatable提供的排序功能。
$("table").dataTable({
"aaData":persons,
"aaSorting": [[1, 'desc']]
]
});
Datatable是基于0的,所以这会在为表的第二列加载时将表排序为默认的降序。
来源:http://datatables.net/release-datatables/examples/basic_init/table_sorting.html