Пользовательская сортировка значений в атрибуте сортировки данных с помощью 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: как сортировать по пользовательскому значению параметра, а не по содержимому ячейки?, но, к сожалению, нет ответа на то, как сортировать просто по пользовательскому параметру, вместо этого указывает на пользовательские скрипты сортировки.
Ответы
Ответ 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).