2015-11-19 3 views
1

Я использую плагин для моего проекта. Теперь то, что я пытаюсь сделать, совершенно уникально, и я не слишком уверен, как это сделать. В основном в моей таблице данных самая первая строка всегда будет относиться к зарегистрированному пользователю. Поэтому при сортировке, разбиении на страницы и поиске я бы хотел, чтобы эта строка была последовательной и никогда не перемещалась и не исчезала. Было бы неплохо, если бы я мог применить его ко второй строке, поэтому у меня могла быть какая-то вроде разделительной строки между личной строкой и остальными данными.JQuery DataTables предотвращает действия в первой строке

Как я могу подойти к этому?

EDIT:

fiddle, это показывает теперь таблица давайте предположим, я Mike Man, я хотел бы быть в верхней части таблицы в любое время. Во время поиска, разбиения на страницы и сортировка.

я назвал в функции, как это:

$(document).ready(function() { 
    $("#dataTable").dataTable(); 
}); 

, но я жду, что мне нужно, чтобы настроить его для того, что я хочу.

+0

создать для этой –

+0

Я включил скрипку, показывающую, что я делаю – mdixon18

ответ

1

Вы можете сделать это очень легко, выделив <thead><tr>, как всегда видно «строка пользователя». Объявляем дополнительный ряд в <thead>:

<tr id="userRow"> 
    <th></th> 
    <th></th> 
    ... 
</tr> 

Дайте первоначально <thead><tr> идентификатор #sortRow. В initComplete popuplate #userRow с содержанием первого ряда, и поменять местами два <thead><tr> «S:

initComplete : function() { 
    this.api().row(0).data().forEach(function(str, i) { 
     $("#userRow th:eq("+i+")").text(str); 
    })   
    $("#userRow").before($("#sortRow")); 
}  

демо ->http://jsfiddle.net/my577xu4/

В вашем случае вы могли бы сделать точно такой же, но ваш комплекс вложенных таблиц и действительно закрывающий CSS, который стилирует содержимое, требует дополнительной корректировки вручную:

initComplete : function() { 
    $("#userRow th:eq(0)").html(this.api().row(0).column(0).nodes().to$().html()); 
    $("#userRow th:eq(1)").html(this.api().row(0).column(1).nodes().to$().html()); 
    $("#userRow").before($("#sortRow")); 
} 

al al большинство, но некоторые C делают фиолетовый круг плавать вокруг, и вы должны стили скопированной вложенную <table> структуры, а также ->https://jsfiddle.net/zukbrc57/1/ - Я не смею, чтобы попробовать возиться с такой детальной планировкой :)

+0

ха-ха без проблем. Это здорово, я буду работать с ним. – mdixon18

+0

Я уверен, что это вступит в силу после загрузки данных? Как я собираюсь заполнить с помощью ajax. Взятие html полностью будет хорошо, но до тех пор, пока оно будет выполнено. – mdixon18

+0

@ mdixon18 - к сожалению, нет обратного вызова 'ajaxFinishedPopulateDataDone', но вы можете использовать обратный вызов ajax' dataSrc' и небольшую задержку для ожидания заполнения данных (у меня такое чувство, что у вас есть много вложений/манипуляций HTML для каждого ячейку), а затем скопируйте окончательный отображаемый HTML-контент из столбцов первой строки в «userRow», например -> ** http: //jsfiddle.net/p37kqonv/** – davidkonrad

1

Сохраните первую строку, в которой вы хотите всегда находиться в переменной, например var row;. Предположим, что ваша таблица данных имеет класс .data-table или любой другой селектор, который вы хотите использовать для него. Создайте свой разбитый на страницы таблицы, как обычно, без первой строки. После этого вы можете использовать метод prepend() JQuery на каждой странице в скрипте, чтобы добавить эту строку в таблицу следующим образом:

$('.data-table').prepend(row);

Если вы хотите добавить разделитель после этого, просто добавьте его в конец переменной row.

+0

Я вижу, я могу хранить строку по всему миру в строке var.Но как я могу изменить настройки данных, чтобы добавить их в правильное время? – mdixon18

+0

Если «правильные времена» вы имеете в виду на разных страницах, на которых вы показываете свою таблицу данных, вам просто нужно включить предлагаемое решение в файл JavaScript для этой страницы или как встроенный скрипт в HTML (первый предпочтительнее для лучшей организации вашего кода). Если нет, пожалуйста, уточните, какое событие вы хотите добавить в строку. Вы можете вызвать этот метод, когда желаемое событие будет запущено. –

+0

Ну, я имею в виду, конечно, мне нужно делать preend каждый раз, когда выполняется поиск, разбивается на страницы и сортировка выполняется. Но как мне это сделать? – mdixon18

Смежные вопросы