【问题标题】:Sorting with hidden columns to the left not working使用左侧隐藏列排序不起作用
【发布时间】:2012-08-14 09:45:58
【问题描述】:

我正在尝试使用选择元素对某些列进行排序,以便在我的表中工作。在列的左侧,我有一列在初始化时隐藏。

我正在使用来自 DataTables.net 的 dom-select 排序插件:

$.fn.dataTableExt.afnSortData['dom-select'] = function  ( oSettings, iColumn )
{
        console.log(iColumn);

    var aData = [];
    $( 'td:eq('+iColumn+') select', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
        aData.push( $(this).val() );
    } );
    return aData;
};

当对一列进行排序时,该列的索引在左侧有隐藏列和没有隐藏列时是相同的(afnSortData 上方的 iColumn)。但是,当左侧的列被隐藏时,排序将应用于右侧的列。如果它是未隐藏的排序工作应该。

当左侧有隐藏列时,如何确保将排序应用于我单击的同一列?

【问题讨论】:

    标签: javascript jquery sorting datatables


    【解决方案1】:

    一种快速而肮脏的方法是将 iColumn 值设置为少 1。

    iColumn = iColumn - 1;
    

    更新DataTables forum 所述,更清晰的方法是这条路线:

    iColumn = oSettings.oApi._fnColumnIndexToVisible( oSettings, iColumn );
    

    【讨论】:

    • 谢谢,我会试试看,然后带着 cmets 回到这里。
    • 但是当我取消隐藏该列时出现问题。而且我取消隐藏的列不是最左边,而是在表格的中间,所以它只会将列固定在未隐藏列的右侧。
    • 太好了,谢谢,这解决了。我之前实际上使用过 fnColumnIndexToVisible 但显然不是以正确的方式(oTable.fnColumnIndexToVisible(iColumn) = 不正确的方式)。
    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多