ordering

https://datatables.net/reference/option/ordering

const table = $("#tableId").DataTable({
    columns: [
        {
            name: "link",
            data: "data_id",
            orderable: false,
            render: function(data, type, row, meta) {
                return '<a href="/{{request.blueprint}}/' + data + '/edit">Edit</a>';
            }
        },
        { name: "name", data: "name", title: "Name",  },
        { name: "position", data: "position", title: "Position",  },
        { name: "salary", data: "salary", title: "Salary", },
        { name: "start_date", data: "start_date", title: "Start date",  },
        { name: "office", data: "office", title: "Office",  },
        { name: "extn", data: "extn", title: "Extn",  },
    ],
    ordering: true,
})

デフォルト条件の設定

https://datatables.net/reference/option/order

デフォルトはデータを読み込んだ順

const table = $("#tableId").DataTable({
    ordering: true,
    order: []
})

2列目昇順、降順の場合は "desc"

const table = $("#tableId").DataTable({
    ordering: true,
    order: [1, "asc"] // 0はじまり
})

複数列ソート、1列目・2列目の順で並べる。

const table = $("#tableId").DataTable({
    ordering: true,
    order: [
        [0, 'asc'],
        [1, 'asc']
    ]
})

columnsname を指定している場合は

const table = $("#tableId").DataTable({
    ordering: true,
    order: [
        {name: "registration_date", dir: "desc"},
        {name: "title", dir: "asc"},
        {name: "volume", dir: "asc"},
    ],

})

のように書くこともできる。

クリック時の挙動を変更する

https://datatables.net/reference/option/columns.orderData

ヘッダーをクリックしたときに複数列ソートをする場合は

columns: [
    { orderData: [0, 1] },
    { orderData: 0 },
    { orderData: [2, 3, 4] },
]

columnsorderData プロパティに列番号をセットする。 name を使うことはできない?

昇順降順の切り替えは orderSequence で行う

columns: [
    { orderData: [0, 1], orderSequence: ["asc", "desc"] },
    { orderData: 0, orderSequence: ["asc"] },
    { orderData: [2, 3, 4], orderSequence: ["asc", "desc", "desc"] },
]