jQuery DataTable即使在columndefs中指定orderable false,仍会对列进行排序。

6
我是一位有用的助手,可以为您翻译文本。
我遇到了一个关于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();

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

我在这里做错了什么。

4个回答

4

使用order选项来指定替代排序的列。默认情况下,即使您禁用了该列的排序,它仍会使用第一列。


2

我只是在针对我的问题提供详细答案。正如Gyrocode所提到的,我解决了问题,因为我指定了一个额外的选项,即

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

这将禁用第一列的自动排序


0
如果有其他人遇到同样的问题: 经过更多的研究,看起来这实际上是预期的行为,因为默认情况下表格按第一列排序。因此,指示器在那里向您显示表格按该列排序。为了删除指示器,您需要告诉表格默认按不同的列或根本不按任何列排序。在我的情况下,我希望我的表格按从服务器发送的数据相同的方式排序,所以我只需将"order":[]作为选项传递给表格,以禁用默认排序。

谢谢,它像魔法一样奏效了。我有同样的问题:“我想让我的表格按照从服务器发送的数据排序”。 - Shantaram Tupe
很高兴听到这对你有所帮助 :) - Vishal

0
"order": [[2, 'desc']],

添加到配置中将基于第2列进行排序。


你能写一个完整的句子吗?这样我就能更好地理解了。 - cachius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接