如何生成jQuery DataTables的rowId客户端?

时间:2016-07-25 18:33:26

标签: datatables rowid

jQuery DataTables reference显示了一个将rowId选项设置为数据源(服务器端)列的示例。此设置用于"选择"扩展名和retaining row selection on Ajax reload

有没有办法生成行标识符值1)客户端,或2)作为数据源中多列的组合?

示例数据来源:

{
    "data": [
    {
        "aid": 5421,
        "bid": 4502,
        "name": "John Smith"
    }
}

代码:

$("#datatable").DataTable({
    select: true,
    //rowId: "aid" each row ID is the value of the "aid" column
    //       e.g., <tr id="5421">

    //rowId: 0 each row ID is the value of the 0-indexed column
    //       e.g., <tr id="5421"> (same as above)

    rowId: [0, 1] // How? row ID combined value of 2+ columns
                  // e.g. <tr id="5421-4502">

    rowId: "random" // How? random generated client-side ID
                    // e.g., <tr id="id34e04">
});

2 个答案:

答案 0 :(得分:1)

显然,没有办法直接这样做。要解决此问题,您可以使用ajax.dataSrc选项和/或rowId选项:

// Example using dataSrc option to manipulate data:
$("#example").dataTable({
    ajax: {
        url: "data.json",
        dataSrc: function (json) {
            for (var i = 0, ien = json.data.length; i < ien; i++) {
                json.data[i][0] = '<a href="' + json.data[i][0] + '">View Message</a>';
            }
        }
    }
});

答案 1 :(得分:0)

这对我有用:

$("#datatable").DataTable({
    ...
    'createdRow': function(nRow, aData, iDataIndex) {
        $(nRow).attr('id', 'row' + iDataIndex); // or if you prefer 'row' + aData.aid + aData.bid
    },   
    ...
});

我从question对其进行了更新,它似乎与此副本相同。 createdRow回调为documented here