1

迁移到 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() 等,但它不起作用。

欢迎任何想法和建议。

4

1 回答 1

0

我不认为initComlete是更改 DataTables 行为的正确位置,至少对于 1.10 而言。从手册

DataTables 将每个表的配置和数据存储在设置对象中。就 DataTables API 而言,此对象的结构被认为是私有的,并且不支持读取或写入对象中的值。对象中包含的属性名称和值可以、将会并且确实会在版本之间发生变化!

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

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

请参阅此 JSFiddle进行演示。

于 2015-05-30T11:16:27.123 回答