У меня есть 9 таблиц данных на одной странице, и я использую вкладки начальной загрузки, чтобы отделить их.Есть несколько вкладок, которые используют одну и ту же таблицу данных только потому, что она изменяет содержимое в зависимости от того, на какой вкладке нажимают (Это было сделано для того, чтобы подражать нашей предыдущей практике с использованием электронной таблицы Google, один пример состоит в том, что на разных листах есть одинаковые столбцы, но с разными данными, т.е.разные ветки).
Я использовал фиксированный столбец с данными во всех данных, поэтому я очень полагаюсь на него.Проблема возникает, когда я меняю вкладку несколько раз, чтобы фиксированный столбец застрял, однако данные и выравнивание верны, но когда я нажимаю кнопку сортировки над фиксированным столбцом, данные, находящиеся позади, будут фактически отсортированы, но данные фиксированного столбца не будут следовать, яподтвердил это, когда я удалил фиксированный столбец, используя элемент проверкиТакже, когда я ищу что-то, чего не существует в таблице, одна строка фиксированного столбца с одними данными блокирует результат «Не найдено подходящих записей».Также каждый раз, когда я щелкаю по вкладке, она обновляет данные для нее.
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, поэтому я просто вызываю ее в других функциях (особенно при нажатии вкладок) каждый раз, когда я хочу обновить его.
Я думаю, что это может быть из-за того, как я повторно инициализирую данные, особенно для этого множества.Все остальные функции гладкие, кроме этой, и это самое главное.