对数据表中的行分组进行排序

时间:2014-12-24 11:55:39

标签: javascript jquery sorting datatables grouping

我正在使用datables和jquery行分组..

这是 jsfiddle demo

你可以看到它是一个普通的表但是有了行分组,绿色的那些是行组但是没有办法像我能用的那样用点击对它们进行排序“名称和分数”列是对其进行排序的唯一方法,即在此代码中将 sGroupingColumnSortDirection: 更改为"asc""desc"

$(document).ready(function () {
    $('#main').dataTable({
        "bLengthChange": false,
        "bPaginate": false,
        "bFilter": false,
        "bInfo": false
    }).rowGrouping({
        sGroupingColumnSortDirection: "asc", //this one is repsonsible for the group sortings
        bExpandableGrouping: true
    });
});

它的工作方式,但用户没有选项或方法对分组进行排序..

我想过选择下拉列表,因此会根据用户选择的内容对分组进行排序。

<label>
Sort place by:
<select>
  <option value="place">Ascending</option>
  <option value="place">Descending</option>
</select>
</label>

是否可以使用此选择下拉列表对分组进行排序?

1 个答案:

答案 0 :(得分:0)

首先,为下拉列表提供一个id,并为选项提供适当的值。然后,在下拉列表的“onchange”事件中,您需要调用数据表“fnSort”函数。

<select id="selectSort">
    <option value="Ascending">Ascending</option>
    <option value="Descending">Descending</option>
</select>

在jquery document.ready部分中包含以下代码。

$("#selectSort").change(function() {

    var oTable = $('#main').dataTable();
    var sOption = $(this).val();
    if(sOption == "Ascending") {
        var sType = 'asc';
    }
    else {
        var sType = 'desc';
    }

    //code for two columns, change if you have more columns.
    oTable.fnSort( [ [0,sType], [1,sType] ] );  


});

更新了小提琴:http://jsfiddle.net/d03ebwdj/1/

<强>更新 在您的分组方法中,很难根据分组进行排序。你可以做的是,创建第三列作为“地方”。将其设置为隐藏。您可以使用“drawCallback”功能突出显示分组。请参阅here