Я пытаюсь отфильтровать поиск таблицы, которая разбита на страницы - PullRequest
0 голосов
/ 02 июля 2018

Он извлекает только данные, которые находятся на текущей странице, а не все данные в базе данных. Как я могу заставить его фильтровать все записи, а не только записи на текущей странице. Я использую laravel для своего бэкэнда и javascript для функции поиска по фильтру. У меня есть 10 записей, разбитых на 5 страниц в моей таблице. Я могу фильтровать поиск по 5 записям, но не по всем 10. Остальные записи я могу фильтровать только при переходе на вторую страницу

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-12 col-md-offset-0">
            <div class="panel panel-default">

              <div class="form-group">

                <div class="panel-heading">Admin Dashboard <a href ="/users/index" style="margin-left:50px">USERS</a></div>
              <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names..">


              <div class="panel-body">
                    @if (session('message'))
                        <div class="alert alert-success">
                            {{ session('message') }}
                        </div>
                    @endif

                @if ($orders->count() == 0)
                    <p>No orders yet.</p>


                @else

                    <div class="table-responsive">
                        <table class="table table-striped table-bordered" id="myTable">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th >Customer Name</th>
                                    <th>Address</th>
                                    <th>Phone</th>
                                    <th>Delivery date</th>
                                    <th>Type</th>
                                    <th>Flavor</th>
                                    <th>Frosting</th>
                                    <th>How many</th>
                                    <th>Price</th>
                                    <th>Instructions</th>
                                    <th>Status</th>
                                    <th>Delete</th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach ($orders as $order)
                                    <tr>
                                        <td>{{ $order->id }}</td>
                                        <td>{{ $order->customer->name }}</td>
                                        <td>{{ $order->address }}</td>
                                        <td>{{ $order->phone }}</td>
                                        <td>{{ $order->delivery }}</td>
                                        <td>{{ $order->size }}</td>
                                        <td>{{ $order->flavor }}</td>
                                        <td>{{ $order->toppings }}</td>
                                        <td>{{ $order->number }}</td>
                                        <td>{{ $order->price }}</td>
                                        <td style="max-width:200px"><textarea>{{ $order->instructions }}</textarea></td>
                                        <td><a href="{{ route('admin.orders.edit', $order) }}">{{ $order->status->name }}</a></td>
                                        <td><a href="{{ route('admin.orders.destroy', $order) }}"> <button class = "btn btn-danger btn-sm" >Delete</button></a></td>

                                    </tr>
                                @endforeach
                            </tbody>

                        </table>

                    </div> <!-- end table-responsive -->

                @endif
              <div id="links">  {{$orders->links()}}</div>



                </div>
            </div>
        </div>
    </div>
</div>

<script src="../js/jquery-3.3.1.min.js"></script>
<script>
function myFunction() {
  // Declare variables
  var input, filter, table, tr, td,links, i;
  input = document.getElementById("myInput");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  links=document.getElementById("links");

  // Loop through all table rows, and hide those who don't match the search query
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[0];

    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  }
}
</script>
@endsection

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

POST ваш Javascript Filter к контроллеру, который хранит его в Session, в вашем loadingController извлекает эту переменную Session и фильтрует перед разбиением на страницы

0 голосов
/ 02 июля 2018

Вы не можете отфильтровать данные, которые не извлекаются из beckend, без повторного вызова API. Вы можете сделать еще один вызов API с фильтром (и разбить ответ на страницы), или получить все данные с сервера и сделать нумерацию страниц только для отображения (не рекомендуется)

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