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