Подтвердить что ты не робот

Пользовательская сортировка значений в атрибуте сортировки данных с помощью 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 on в этой колонке применяется эта пользовательская сортировка. У меня слишком много данных разных размеров, чтобы сделать это в разумные сроки. Я просто хочу, чтобы Datatables всегда сортировал этот скрытый атрибут value/data- *, если он присутствует. Нет необходимости в пользовательских определениях сортировки для определенных столбцов.

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

4b9b3361

Ответ 1

Вы можете использовать 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-данные-атрибуты

Ответ 2

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

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

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

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

становится

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

Отбрасывая нуль a int, они будут отсортированы как string. Нулевое заполнение делает сортировку так, как вы ожидали: сортировка целых чисел от высокого к низкому.

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