javascript - 如何根据数据项的属性对数据表中的复杂列进行排序?

标签 javascript jquery datatables

我有这个数据表,列出了人员。第一列包含一个人的 3 个属性:<td>[title] [lastName] [firstName]</td> .

例如,如果数据是:

[
    {
        "firstName":"Foo",
        "lastName":"Bar",
        "title":"Z"
    },
    {
        "firstName":"John",
        "lastName":"Doe",
        "title":"A"
    }
];

然后,当升序排序时,行将默认为:

A Doe John
Z Bar Foo

(“A”在“Z”之前)

但是我希望它基于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

最佳答案

看你的代码,好像你使用的是datatable,为什么不使用datatable提供的排序功能。

$("table").dataTable({
  "aaData":persons,
  "aaSorting": [[1, 'desc']]
  ]
});

Datatable 是从 0 开始的,因此这会在加载时对表进行排序,以使表的第二列默认为降序。

来源:http://datatables.net/release-datatables/examples/basic_init/table_sorting.html

关于javascript - 如何根据数据项的属性对数据表中的复杂列进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057478/

相关文章:

javascript - 使用父列作为子行的 DataTables 行详细信息

javascript - 如果任何地方有 "return"语句,Firefox 插件的内容脚本将不会运行

javascript - 作为方法输出的模块变量

jquery - 异步和文档就绪

javascript - JS/jQuery - 获取元素的类型

java - 无法解析来自服务器的 JSON 数据

javascript - 如何在按下鼠标而不是单击、悬停或聚焦时删除 Firefox 按钮轮廓

javascript - 使用 angular-ui-bootstrap 在 AngularJS 中的路径中打开模式

javascript - 当我悬停当前选项卡时更改其他选项卡的不透明度

javascript - 数据表 - 使用重音中和的单个列搜索