使用多个数据表时,数据表固定列卡住了

时间:2019-05-03 00:43:43

标签: javascript jquery ajax datatables

我在一页中有9个数据表,并使用引导程序选项卡将它们分开。有些标签仅使用相同的数据表,只是根据单击的标签来更改内容(这是为了模仿我们以前使用google电子表格的做法,一个示例是不同的工作表具有相同的列但具有不同的数据,即学生不同的分支)。

我在所有数据表中都使用了数据表固定列,因此我非常依赖它。当我多次更改制表符时,固定列将被卡住,数据和对齐方式正确,但是,但是当我单击固定列上方的排序按钮时,后面的数据实际上将进行排序,但固定列数据不会跟随,便出现了问题当我使用inspect元素删除固定列时,确认了这一点。另外,当我搜索表中不存在的内容时,固定行的一行包含一个数据,这将阻止结果“找不到匹配的记录”。同样,每次我单击一个选项卡时,它都会为其刷新数据表。


var columns_students = [
        {data: 'name', name: 'name'},
        {data: 'contact', name: 'contact'},
        {data: 'program.name', name: 'program'},
        {data: 'school.name', name: 'school'},
        {data: 'benefactor.name', name: 'benefactor'},
        {data: 'gender', name: 'gender'},
        {data: 'age', name: 'age'},
        {data: 'course.name', name: 'course'},
        {data: 'email', name: 'email'},
        {data: 'date_of_signup', name: 'date_of_signup'},
        {data: 'referral.fname', name: 'referral'},
        {data: 'remarks', name: 'remarks'},
        {data: "action", orderable:false,searchable:false}
    ]

var columnDefs_students = [
    { width: 220, targets: 0 }, //name
    { width: 90, targets: 1 }, //contact
    { width: 130, targets: 2 }, //program
    { width: 130, targets: 3 }, //school
    { width: 130, targets: 4 }, //benefactor
    { width: 60, targets: 5 }, //gender
    { width: 45, targets: 6 }, //age
    { width: 200, targets: 7 }, //course
    { width: 200, targets: 8 }, //email
    { width: 120, targets: 9 }, //signup
    { width: 120, targets: 10 }, //referral
    { width: 250, targets: 11 }, //remarks
    { width: 150, targets: 12 }, //action
    {defaultContent: "", targets: "_all"}
]


function refresh_student_branch(){
        departure_year = $('#year_select').val();
        departure_month = $('#month_select').val();

        students_branch = $('#students_branch').DataTable({
            stateSave: true,
            stateSaveCallback: function(settings,data) {
                localStorage.setItem( 'DataTables_' + settings.sInstance, JSON.stringify(data) )
            },
            stateLoadCallback: function(settings) {
                return JSON.parse( localStorage.getItem( 'DataTables_' + settings.sInstance ) )
            },
            stateLoadParams: function( settings, data ) {
                if (data.order) delete data.order;
            },
            processing: true,
            destroy: true,
            scrollX: true,
            scrollCollapse: true,
            fixedColumns: true,
            ajax: {
                url: '/student_branch',
                data: {
                    current_branch: current_branch,
                    departure_year: departure_year,
                    departure_month: departure_month
                }
            },
            columnDefs: columnDefs_students,
            columns: columns_students,
            order: [[3,'asc']]
        });

    }


$('.branch_pick').on('click', function(){
    current_branch = $(this).text();

    showMonthSelect();
    refresh_student_branch();
});

这是我重新初始化数据表的方式,您可以看到它在javascript函数内部,因此每次想刷新它时,我都可以在其他函数中调用它(尤其是单击选项卡)。

我认为这可能是因为我如何重新初始化数据表,尤其是对于许多人而言。除此功能外,其他所有功能都很流畅,这是最重要的。

0 个答案:

没有答案