使用window.dtDefaultOptions

时间:2019-04-05 07:07:06

标签: javascript jquery sorting datatables

我正在寻找一种方法,使我的表按在date列上降序的日期进行预排序。我已经阅读了有关排序的数据表文档,但是在使用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 个答案:

答案 0 :(得分:0)

我找到了一种通过递减渲染使列排序的方法。

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一起实现列顺序,那么我将对学习感兴趣。