即使在columndefs

时间:2016-05-02 15:43:55

标签: jquery datatables

我遇到了JQUERY Datatable插件的一个奇怪问题。我在每一行都使用了评级功能。第一个单元实际上为此目的保留了控件。

这是第一个单元格的标记

<input class="row-check" type="checkbox"><span class="fa-stack fa-lg star-rating">
<i class="fa fa-star goldstar  fa-stack-2x"></i>
<strong class="fa-stack-1x inside-text">4</strong> </span>

这是使用

的Datatable初始化代码
    var myTable = $("#tbl_main").dataTable({
    "dom": "<'tableinfobar'i><'tablesearchbox'f><'tablestarfilter'><'tablestarreset'><'tablebody't>S<'tablelength'l><'tablepaging'p>",
    "ordering": true,
    "columnDefs": [{ "targets": [0, 6], "searchable": false, "orderable": false }, 
{ "targets": [ 1, 3, 4, 5,  7, 8, 9], "orderable": false }, 
{ "targets": [2], "type": "html-num", "orderable": true}],
    "lengthMenu": [
        [10, 20, 50, 100, 500, -1],
        [10, 20, 50, 100, 500, "All"]
    ],
    "language": {
        "search": "Quick Search _INPUT_",
        "zeroRecords": "No assessments found with that search criteria.",
        "info": "Showing _START_ to _END_ of _TOTAL_ Assessments",
        "infoFiltered": " - filtered from _MAX_ entries",
        "lengthMenu": "Show _MENU_ Entries"
    }
}).show();

正如您在代码中看到的,我禁用了columndef中第一列的排序。但是,如果第一个单元格中的某些值强标记 (在这种情况下为<strong class="fa-stack-1x inside-text">4</strong>,整个表格将根据该值进行降序排序。表示如果第一个单元格中强标记内的任何其他行没有评级值,则具有某些值的行将显示为整个表格中的最后一行。

我在这里做错了什么。

3 个答案:

答案 0 :(得分:3)

使用order选项指定要排序的备用列。默认情况下,即使您禁用该列的排序,它也会使用第一列。

答案 1 :(得分:2)

我只是为我的问题指定详细的答案。正如Gyrocode所说,我解决了这个问题,因为我指定了另一个选项

order:[] //in the datatable initialization code. 

这会禁用自动排序第一列

答案 2 :(得分:0)

如果其他人遇到同样的问题: 经过一些更多的研究后,看起来这实际上是预期的行为,因为默认情况下,表在第一列上排序。因此,指示器会向您显示该表是按该列排序的。要删除指标,您需要告诉表格在不同的列上进行默认排序,或者根本没有列。在我的情况下,我希望我的表的排序方式与从服务器发送数据的方式相同,所以我只是通过&#34; order&#34;:[] 作为表的选项,禁用默认排序。