【问题标题】:DataTables v1.10 sorting by hidden columnDataTables v1.10 按隐藏列排序
【发布时间】:2015-05-29 20:53:41
【问题描述】:

迁移到 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() 等,但没有奏效。

欢迎任何想法和建议。

【问题讨论】:

    标签: datatables-1.10


    【解决方案1】:

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

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

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

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

    请参阅this JSFiddle 进行演示。

    【讨论】:

    • 这个选项自旧版本以来没有改变。不幸的是,它不适用于我们的情况。我们有 100 多个参考默认“脚本”的页面。这是我要查看的最后一个选项。
    • @Maxim,我已经更新了我的答案。如果您无法更新所有页面或自动执行迁移过程,最好的办法是保留您正在使用的版本。根据您的问题,我了解到您可以编辑代码,因为您尝试过更新的 API,例如 initCompletecolumn() 等。
    • 谢谢。看来我们需要更改我们的代码:(
    猜你喜欢
    • 2015-12-15
    • 2016-10-30
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多