Пользовательская сортировка по значениям в атрибуте сортировки данных с помощью jQuery Datatables

Я должен сделать некоторые пользовательские виды с jQuery Datatables. Я не хочу писать пользовательские функции сортировки для каждой пользовательской сортировки.

Я хочу определить значение для сортировки и иметь Datatables игнорировать исходные значения столбцов, если значение определено.

например:

<td data-sort="111123">E 1.111,23</td>

Я хочу, чтобы jQuery Datatables сортировали этот столбец численно на 111123.

<td data-sort="19801220">20-12-1980</td>

Я хочу, чтобы jQuery Datatables сортировали этот столбец численно на 19801220.

<td>a string</td>

Я хочу, чтобы jQuery Datatables отсортировал этот столбец по его исходному значению a string.

http://www.datatables.net/plug-ins/sorting имеет "скрытую цифровую сортировку заголовка", которая близка к тому, что я хочу, но требует, чтобы я указывал для каждого datatable, к которому применяется эта пользовательская сортировка. У меня слишком много datatables разных размеров, чтобы сделать это за разумное время. Я просто хочу сделать Datatables всегда сортируйте это скрытое значение / атрибут data -*, если он присутствует. Нет необходимости в пользовательских определениях сортировки для определенных столбцов.

по теме: jQuery DataTables: как Сортировать по пользовательскому значению параметра, а не по содержимому ячейки? но, к сожалению, нет ответа о том, как сортировать просто по пользовательскому параметру, вместо этого указывает на пользовательские скрипты сортировки.

2 ответов


вы можете использовать Data-order attr, например

<table class="table table-bordered table-hover">
<thead>
    <tr>
        <th>Date</th>
        <th>Count</th>
    </tr>
</thead>
<tbody>
<?php
   $count = 0;
   foreach($users as $user) {?>
      <tr>
         <td data-order="<?php echo $count ?>">
            <?php echo $user['createdDate']; ?>
         </td>
         <td>
            <?php echo $user['count']; ?>
         </td>
         </tr>
   <?php
      $count++;
   }?>
   <tr>
      <td data-order="999999999999999999999999999"> <!--always last-->
          Total
      </td>
      <td>
         <?php echo count($users); ?>
      </td>
  </tr>

дополнительная информация данные HTML5 - * атрибуты


я нашел простое решение, которое работает для меня и не требует слишком много кода или изменений в datatables.js.

это очень похоже на требования вопроса, но не совсем то же самое.

вместо data-sort вы можете использовать тег комментариев HTML.

<td data-sort="111123">E 1.111,23</td>

становится

<td><!-- 000000111123 -->E 1.111,23</td>

на ноль-обивка int они будут отсортированы как string. Нулевой отступ делает вид вести себя так, как вы ожидаете: сортировка целых чисел от high до low.

решение работает для дат, ints и строк. Для дат и ints вы можете использовать язык сценариев для вывода их так, как вы хотите (например: zero-padded, отформатированный как yyyy-mm-dd).