Серверная часть Datatables: выпадающий фильтр со всеми опциями? - PullRequest
1 голос
/ 11 апреля 2019

Я реализовал таблицу данных, которая работает на стороне сервера.Однако я также хочу использовать выпадающий фильтр выбора.Проблема, с которой я сталкиваюсь, состоит в том, что фильтр показывает только те значения, которые отображаются на текущей странице.Как видите, это не очень полезно, потому что я хочу иметь возможность фильтровать таблицу по всем данным, а не только по данным, которые отображаются.

Я использую Laravel и этот пакет https://github.com/yajra/laravel-datatables.

Ребята, у вас есть какие-либо идеи, как решить эту проблему?

Это пример работы моего настольного сервера на стороне.Вы можете видеть, у вас есть только показанные значения в качестве опции для фильтрации:

$(document).ready(function() {
  $('#example').DataTable({
    serverSide: true,
    ordering: false,
    searching: false,
    ajax: function(data, callback, settings) {
      var out = [];

      for (var i = data.start, ien = data.start + data.length; i < ien; i++) {
        out.push([i + '-1' , i + '-2', i + '-3', i + '-4', i + '-5']);
      }

      setTimeout(function() {
        callback({
          draw: data.draw,
          data: out,
          recordsTotal: 5000,
          recordsFiltered: 5000
        });
      }, 50);
    },
    initComplete: function () {
      this.api().columns().every( function () {
        var column = this;
        var select = $('<select><option value=""></option></select>');
        select.appendTo( $(column.header()).empty() )

        select.on( 'click', function(e) {
          e.stopPropagation();
        } );


        select.on( 'change', function () {
          var val = $.fn.dataTable.util.escapeRegex(
            $(this).val()
          );

          column
            .search( val ? '^'+val+'$' : '', true, false )
            .draw();
        } );

        column.data().unique().sort().each( function ( d, j ) {
          select.append( '<option value="'+d+'">'+d+'</option>' )
        } );
      } );
    },
  });
});
<script src="https://code.jquery.com/jquery-1.12.3.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table width="100%" class="table table-striped table-bordered dt-responsive nowrap" id="example" cellspacing="0">
  <thead>
    <tr>
      <th>ID</th>
      <th>First name</th>
      <th>Last name</th>
      <th>ZIP / Post code</th>
      <th>Country</th>
    </tr>
  </thead>
</table>

С уважением и благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...