【问题标题】:Sort datatable by hidden column按隐藏列对数据表进行排序
【发布时间】:2014-01-29 12:20:00
【问题描述】:

我有 datatableid, firstName, lastName, phone, updated 字段。

问题:我只向datatable 添加了四个字段(id、firstName、lastName 和 phone)。 Updated 字段已隐藏。

问题:如何按updated字段对datatable进行排序?

我的代码:

   $('#table').dataTable({
        sDom: '<"top"fi>tS',
        sScrollY: ($(window).height() - 250) + "px",
        bPaginate: false,
        bDeferRender: true,
        bAutoWidth: false,
        oLanguage: {
            sInfo: "Total: _TOTAL_ entities",
            sEmptyTable: "No pending entities"
        },
        "aoColumnDefs": [
            { "iDataSort": 4, "aTargets": [ 0 ] }
        ],
        "aoColumns": [
            { "sWidth": "10%" },
            { "sWidth": "40%" },
            { "sWidth": "30%" },
            { "sWidth": "20%" },
            { "sTitle": "updated ", "bVisible":false }
        ],
        fnCreatedRow: function( nRow, aData, iDataIndex ) {
            $(nRow).attr('id', aData[0]);
        }
    });

table.fnAddData([id, firstName, lastName, phone, updated]);

【问题讨论】:

  • 你想在表初始化上对其进行排序吗?
  • @dcodesmith 是的。但如果我能随时排序就好了。
  • 好的,更新列在你表中的位置,我知道它是隐藏的,但它应该有索引
  • @dcodesmith by hidden 我的意思是我根本不添加它。如果我必须添加updated 列,请告诉我如何
  • @dcodesmith 我的意思是目前table 不包含任何updated 字段。我不知道如何添加隐藏字段。

标签: javascript jquery datatables


【解决方案1】:

From the documentation:.

idatasort 列索引(从0开始),您希望在选择该列以进行排序时要执行的排序。例如,这可用于对隐藏列进行排序。

Default: -1使用自动计算的列索引

Type: int

// Using aoColumnDefs
$(document).ready( function() {
  $('#example').dataTable( {
    "aoColumnDefs": [
      { "iDataSort": 1, "aTargets": [ 0 ] }
    ]
  } );
} );
 
// Using aoColumns
$(document).ready( function() {
  $('#example').dataTable( {
    "aoColumns": [
      { "iDataSort": 1 },
      null,
      null,
      null,
      null
    ]
  } );
} );

【讨论】:

  • 如何设置排序顺序:desc、asc?
  • 试试这个.."aaSorting": [[ 4, "desc" ]],
  • 现在绝对不推荐使用...您应该通过 HTML 5 使用data-sort。请参阅stackoverflow.com/a/28730668/1408137
【解决方案2】:

你可以在这里简单地使用{ "iDataSort": 4 }(4是你隐藏字段的索引)

var data = [
["1","john","mathew","1234",[]],
["2","Mary","rose","1234","1"],
];

添加隐藏字段并将数据添加到表中

aaData: data,
aoColumns :[
        { "sTitle": "id","bSortable": false },
        { "sTitle": "firstName","bSortable": false, },
        { "sTitle": "lastName", "bSortable": false,},
        {"sTitle": "phone","bSortable": false},
        {"sTitle": "updated ", "bVisible":false },
        ]

要添加隐藏字段,请使用"bVisible":false

【讨论】:

  • 如何添加隐藏字段?
  • 我会在一个小时内检查它
  • 我应该在数据表中添加updated参数:table.fnAddData([id, firstName, lastName, phone])还是table.fnAddData([id, firstName, lastName, phone, updated])
  • 耶!您必须添加updated 参数,例如table.fnAddData([id, firstName, lastName, phone, updated])
  • 我收到Datatables warning (table id = 'home-hr-candidates-pending'): Requested unknown parameter '4' from the data source for row 0
【解决方案3】:

我在运行时对隐藏列进行排序时遇到了问题,不知道该方法是否有效。我使用以下几行通过 CSS 隐藏列

td:nth-of-type(2) {
display: none;
}

其中 2 是您的列,为您的 &lt;th class="mycolum1"&gt; 分配一个类并使用 jquery 对其进行排序

$("#button").click(function(){
$(".mycolumn").click();
})

如果该方法无效,请原谅我,但在我的情况下,它是 100% 可以接受的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多