Столбец сортировки / упорядочения DataTables со специальными символами

Я использую плагин DataTables jQuery для добавления сортировки / заказа в таблицу. Мне пришлось добавить специальный символ korteri nrк некоторым номерам в столбце. Когда я это сделал, сортировка / заказ стали работать некорректно. Как вы можете видеть, первое значение в <code> korteri nr </ code> равно 1, затем 10 и т. Д., Но есть 2, 3 и другие, которые находятся в нижнем положении, если прокрутка Как вы можете видеть, первое значение - 1, затем 10 и т. Д., Но есть 2, 3 и другие, которые находятся в нижнем положении, если прокрутка$.fn.dataTableExt.oSort['custom-sorting-asc'] = function(a,b) { a = escapeRegExp(a); b = escapeRegExp(b); return (a == b) ? 0 : (a > b) ? 1 : -1; }; $.fn.dataTableExt.oSort['custom-sorting-desc'] = function(a,b) { a = escapeRegExp(a); b = escapeRegExp(b); return (a == b) ? 0 : (a > b) ? -1 : 1; //reverse sorting }; function escapeRegExp(string){ return string.replace(/[-[]{}()*+?.,\^$|#s]/g, "\$&"); } $('.handp-table').DataTable( { searching: false, paging: false, aoColumns: [ { "sType": "custom-sorting" }, //custom sorting null, //default sorting null, null, null, null, null ] } );

Я пробовал этот код для правильного упорядочения, но это не помогает

aoColumns: [
                { fnRender: function(data,type,full){
                       if(type==='sort'){
                           return data;
                       }
                       return data+'*';
                  } 
                }
                null, //default sorting
                null,
                null,
                null,
                null,
                null
            ]

jquery,sorting,datatables,

1

Ответов: 3


0

Проблема в том, что datatables интерпретирует значения в этом столбце как строки и сортирует их по алфавиту.

Вы можете попробовать использовать функцию рендеринга в соответствующем столбце:

*

Я предполагаю, что данные, которые вы извлекаете с сервера, являются целыми числами. Если это так, то Datatables будет достаточно умным, чтобы использовать и использовать целочисленное значение для сортировки и использовать целочисленное значение с конкатенированной *(т. Е. Строкой ) для отображения, фильтрации и т. Д.

Кстати, если вы используете Datatables 1.10+, я бы предложил вам использовать новый синтаксис (более понятный и простой в использовании)


0 принят

Нашел еще одно решение этой проблемы. Я изменил логику, которая создала содержимое столбца. Вместо того, some_classчтобы добавлять к каждому номеру, где должен быть этот символ, я добавил класс к этому элементу, CSS pseudo element :afterа затем *был добавлен DataTablesкак контент. DataTablesне считается css, поэтому он работает теперь как следует.


0

Вот более простой способ и более гибкий: вы можете добавить атрибут data-orderк каждому tdтегу, который затем будет использоваться для заказа. Я дал более подробный ответ здесь: https://stackoverflow.com/a/51225222/8801891

JQuery, сортировка, DataTables,
Похожие вопросы