Столбец таблицы заказов в порядке asc / des c с таблицами данных - PullRequest
0 голосов
/ 18 марта 2020

Я использую datatable v1.10.13. У меня проблема с отображением данных в соответствии с create_at laravel. При получении данных я получаю сообщения в соответствии с create_at des c, но при отображении данных показывает данные в алфавитном порядке. Как я могу получить последнее сообщение первым с таблицами данных? Я не заполняю данные ajax.

У меня есть этот запрос для получения сообщений в PostController:

$allPost = $this->post->orderBy('created_at', 'desc')->get();

У меня есть следующий код в html:

imageimage }}">

У меня есть следующий код для вызова initialize datatable:

$('#posts-data').DataTable({
    colReorder: true,
    pageLength: 0,
    lengthMenu: [20, 40, 60, 80, 90, 100],
});

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Некоторые предложения:

1) Параметр DataTables «сортировка по умолчанию»

Решение, предложенное @Remul - order: [] - должно сработать. Это говорит о том, что есть проблема в другом месте, потенциально мешающая DataTables. Некоторые предложения:

(a) Итератор foreach делает что-то удивительное. Маловероятно, но вы можете проверить это.

(b) Можете ли вы получить DataTables для первоначальной сортировки по любому другому полю , используя order []? Например, сортировка по первому столбцу в порядке убывания:

order: [[ 0 , "desc" ]],

(c) Ваш инициализатор DataTables находится внутри функции document ready?

$(document).ready(function() {

  $('#posts-data').DataTable({
    colReorder: true,
    order: [],
    pageLength: 0,
    lengthMenu: [20, 40, 60, 80, 90, 100],
  });

});

I'm конечно, но на всякий случай ...

2) Добавьте ваши created_at данные в таблицу

Я предполагаю, что это поле даты или даты / времени. DataTables имеет несколько ограниченную поддержку для сортировки дат и времени (без использования плагинов), поэтому я рекомендую отформатировать ваши данные как поле сортируемой строки (например, YYYY-MM-DD HH24:MI:SS или любой другой вариант, который вам подходит).

(a) Вы можете добавьте его как скрытое поле.

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

"columnDefs": [
  {
    "targets": 5, // assuming the datetime is the 6th column
    "visible": false
  }
]

3) Сборка из базового c решения

Удалите все, что не нужно, чтобы продемонстрировать нужный порядок сортировки. Так, например, удалите colReorder; удалить все столбцы, кроме первого, и так далее. Предполагая, что он начинает работать в какой-то момент, вы можете добавлять элементы обратно один за другим.

0 голосов
/ 18 марта 2020

Добавление order: [] должно решить вашу проблему:

$('#posts-data').DataTable({
    colReorder: true,
    order: [],
    pageLength: 0,
    lengthMenu: [20, 40, 60, 80, 90, 100],
});

По умолчанию datatable сортирует таблицу по первому столбцу, поэтому заголовок в вашем случае, но так как вы предоставляете начальный порядок из ваших данных , вы можете установить порядок по умолчанию для пустого массива.

...