DataTables v1.10 按隐藏列排序

DataTables v1.10 sorting by hidden column

迁移到 v1.10 后,按隐藏列排序停止工作。

提琴手示例 v1.10 http://jsfiddle.net/0rstgd4f/

var dataTableInfo = $("#dataTable1").DataTable(
    {
        "initComplete": function(settings, json) 
   {
       settings.aoColumns[0].iDataSort = 1;  
      }
    });
<table id="dataTable1">
    <thead>
        <tr>
            <th>
                Column1
            </th>
            <th style="display:none;">
                Column2
            </th>
            <th>
                Column3
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                1
            </td>
            <td style="display:none;">
                1
            </td>
            <td>
                a
            </td>
        </tr>
        <tr>
            <td>
                2
            </td>
            <td style="display:none;">
                2
            </td>
            <td>
                b
            </td>
        </tr>
        <tr>
            <td>
                3
            </td>
            <td style="display:none;">
                1
            </td>
            <td>
                c
            </td>
        </tr>
    </tbody>
</table>

v.1.8.2 http://jsfiddle.net/rzzrbwb0/

列应排序为: 1个 3个 2

或 2个 1个 3

我尝试将 initComplete 的新定义用作 columns()、column() 等,但没有成功。

欢迎提出任何想法和建议。

我认为 initComlete 不是更改 DataTables 行为的正确位置,至少对于 1.10。来自 manual:

DataTables stores the configuration and data for each table in a settings object. The structure of this object is considered to be private in terms of the DataTables API and reading or writing to the values in the object is not supported. The property names and values contained within the object can, will and do change between versions!

如果您使用的是 DataTables 1.10,则应使用 columns.orderData or columnDefs.orderData 定义它,请参见下面的示例:

var dataTableInfo = $("#dataTable1").DataTable({   
   "columnDefs": [
      { "orderData": 1, "targets": [ 0 ] }
   ]        
});

请参阅 this JSFiddle 进行演示。