使用 window.dtDefaultOptions 时如何对数据表列进行默认排序

Posted

技术标签:

【中文标题】使用 window.dtDefaultOptions 时如何对数据表列进行默认排序【英文标题】:How to have a default sort on a datatable column while using window.dtDefaultOptions 【发布时间】:2019-08-27 00:54:20 【问题描述】:

我正在寻找一种方法,让我的表格按日期降序排列。我浏览了有关排序的数据表文档,但在使用window.dtDefaultOptions 时没有找到可行的解决方案。似乎window.dtDefaultOptions.order = [[3, "desc"]] 应该是完成此任务的方法,但它对我不起作用。

我也试过window.dtDefaultOptions.columnDefs = [orderable: true, targets: 3],但这也没有解决问题。

这是我在 index.blade 中的代码:

$(document).ready(function () 
    window.dtDefaultOptions.ajax = '!! route(' admin.feedback.index ') !!';
    window.dtDefaultOptions.stateSave = true;
    //window.dtDefaultOptions.scrollY = '50vh';
    window.dtDefaultOptions.scrollCollapse = true;

    window.dtDefaultOptions.order = [[3, "desc"]];

    window.dtDefaultOptions.columns = [
            data: 'user.name',
            name: 'user.name'
        , 
            data: 'type',
            name: 'type'
        , 
            data: 'comment',
            name: 'feedback.comment'
        , 
            data: 'date',
            name: 'created_at'
        , 
            data: 'actions',
            name: 'actions',
            searchable: false,
            sortable: false
        
    ];
    window.dtDefaultOptions.buttons = [];
    processAjaxTables();
);        

【问题讨论】:

【参考方案1】:

我找到了一种通过在渲染时降序来使列排序的方法。

window.dtDefaultOptions = 
            columnDefs: [],
            "order": [3,'desc'],
        ;

问题是要让它工作,我必须删除或注释掉 saveState 和 scrollCollapes 代码行。

    $(document).ready(function () 
        window.dtDefaultOptions.ajax = '!! route('admin.feedback.index') !!';
        window.dtDefaultOptions = 
            columnDefs: [],
            "order": [3,'desc'],
        ;
        //window.dtDefaultOptions.stateSave = true;
        //window.dtDefaultOptions.scrollY = '50vh';
        //window.dtDefaultOptions.scrollCollapse = true;
        window.dtDefaultOptions.columns = [
             data: 'user.name', 
             name: 'user.name'
         , 
             data: 'type', 
             name: 'type'
         , 
             data: 'comment', 
             name: 'feedback.comment'
         , 
             data: 'date', 
             name: 'created_at'
         , 
             data: 'actions', 
             name: 'actions', searchable: false, sortable: false
         
      ];
        window.dtDefaultOptions.buttons = [];
        processAjaxTables();
    );

所以我们有一个适用于所述问题的答案,但它破坏了代码的其他方面。在这种情况下,我可以忍受这一点,因为在这个特定的表上,列顺序比 stateSave 和 scrollCollapse 更重要。但是,如果有人知道如何与 stateSave 和 scrollCollapse 一起实现列顺序,我会有兴趣学习。

【讨论】:

以上是关于使用 window.dtDefaultOptions 时如何对数据表列进行默认排序的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)