Как я могу перейти на определенную страницу в datatables?

Я пытаюсь перейти на конкретную страницу в initComplete:

var table = $('#example').dataTable( {
  "initComplete": function( settings, json ) {
    table.page(5).draw(false);
  }
} );

Но это не работает. Моя страница по-прежнему находится на странице 1.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
0
209
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема с вашим кодом в том, что table не определен в вашем контексте обратного вызова.

Единственное, что я нашел в своем небольшом исследовании, это то, что вы можете получить API таблицы из параметра настроек.

https://datatables.net/forums/discussion/34352/passing-datatable-object-to-initcomplete-callback

так что, возможно, это могло бы работать так:

var table = $('#example').DataTable( {
  "initComplete": function( settings, json ) {
    settings.oInstance.api().page(5).draw(false);
  }
});

хотя я не пробовал

Попробовал для вас, работает отлично: jsfiddle.net/ke0cjz6L

freedomn-m 25.11.2022 11:39
Ответ принят как подходящий

У вас есть две проблемы:

  • Вам нужно использовать .DataTable, а не .dataTable
    (специально для вызова .page(), а не для начальной инициализации)
  • Пока initComplete бежит, .DataTable({}) не вернулся, поэтому table не определено

Это можно подтвердить с помощью:

  "initComplete": function (settings, json) {
    console.info(table);
    //table.page(5).draw(false);
  }

Однако в initComplete вы можете использовать this, поэтому вам не нужна переменная table.

Изменение на .DataTable и this и ваш код работает нормально:

$('#example').DataTable({
  "pageLength": 2,
  "initComplete": function(settings, json) {
    $(this).DataTable().page(5).draw(false);
  }
});
<link href = "https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/jquery.dataTables.min.css" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>

<table id = "example" class = "display">
  <thead>
    <tr>
      <th>Company name</th>
      <th>Address</th>
      <th>Town</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
    <tr>
      <td>Emkay Entertainments</td>
      <td>Nobel House, Regent Centre</td>
      <td>Lothian</td>
    </tr>
    <tr>
      <td>The Empire</td>
      <td>Milton Keynes Leisure Plaza</td>
      <td>Buckinghamshire</td>
    </tr>
  </tbody>
</table>

Другие вопросы по теме