使用tablesorter对两个相关的表列进行排序

问题描述 投票:1回答:1

我正在尝试构建一个具有两个相关列的表。我试图实现的行为是,如果对列1或列2进行排序,无论是按升序还是降序,另一列按降序排序。未排序的列需要按降序排列。该表可以在任一列中包含重复条目。我已经阅读了关于sortForce作为强制第1列基于第2列进行排序的选项,但我还没有找到一种方法来使第1列和第2列在引用其他列的状态时表现相同。怎么能实现这一目标?

我目前有以下配置。

$(function () {
  $('table').tablesorter({
    ignoreCase: true,
    sortList: [ [0,0], [1,0] ],
    sortAppend: {
        1 : [[ 2, 'd' ]], // always apply descending sort
        2 : [[ 1, 'd' ]]
    },
    sortInitialOrder: "desc",
    sortRestart: true
  });
});
<table class="tablesorter">
    <thead>
        <tr>
            <th>Column 1/th>
            <th>Column 2</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>A</td>
            <td>B</td>
        </tr>
        <tr>
            <td>B</td>
            <td>A</td>
        </tr>
        <tr>
            <td>C</td>
            <td>A</td>
        </tr>
        <tr>
            <td>B</td>
            <td>A</td>
        </tr>
    </tbody>
</table>


Following the table below, lets say I click to sort column 1 in descending order.  Then I would like for the columns to be ordered as:
C : A
C : B
B : A
A : B

If I click on column 1 again to get a ascending order, I would like column 2 to maintain its descending order based off of column 1.
A : B
B : A
C : A
C : B

If I click on column 2 to sort descending, I would like the inverse behavior.  
A : B
C : B
B : A
C : A

And in the last case, if I click to have column 2 in ascending order, it would read as.
B : A
C : A
A : B
C : B
javascript jquery tablesorter
1个回答
0
投票

你在寻找sortAppend option。不要使用值数组设置它,而是将其设置为包含列键(索引或选择器)和要追加的排序的对象。

在这种情况下,我相信以下设置将满足您的需求:

$(function () {
    $('table').tablesorter({
        ignoreCase: true,
        sortList: [ [0,0], [1,0] ],
        sortAppend: {
            1 : [[ 2, 'd' ]], // always apply descending sort
            2 : [[ 1, 'd' ]]
        },
        sortInitialOrder: "desc",
        sortRestart: true
    });
});

*注意:排序方向可以使用a(升序),d(降序),n(下一个),s(相同)和o(相反)来设置:

© www.soinside.com 2019 - 2024. All rights reserved.