Проверьте эту статью о Orthrogonal data из руководства DataTables.
Предположим, у вас есть таблица с тремя столбцами, а в третьем столбце хранятся данные, относящиеся к дате, которые вы хотите отсортировать.
Попробуйте предоставляя свои данные в этом формате:
// Array with data objects
var data = [
{
"column1": "column1_data",
"column2": "column2_data",
"column3": {
"display": "1 year",
// Convert '1 year' to 777600000 (or try your own convertion algorithm)
"timestamp": "777600000"
}
},
{
"column1": "column1_data",
"column2": "column2_data",
"column3": {
"display": "1 month",
"timestamp": "12960000"
}
},
.....
]
Затем при инициализации DataTables попробовать это:
$('#myTable').DataTables({
....
"columns": [
{ data: "column1" },
{ data: "column2" },
{
data: "column3",
render: {
_: 'display',
sort: 'timestamp'
}
}
],
....
});
Таким образом, вы показываете дату в не сортируемом формате (1 год , 5 месяцев и т. Д.), Но вы сортируете этот столбец атрибутом «timstamp».
Все, что вам нужно сделать, это преобразовать буквенное представление данных даты в общий сопоставимый формат и предоставить массив данных.
ДАТА Convertion ПРЕДЛОЖЕНИЕ
Вы просто преобразование буквального представления интервала времени в секунды
/**
* Function that convert a literal (n text) in to a number representing a timestamp
*/ @param literal {string} Text in specific format (n text): n {number} [blank] text {string} ('year','month','day','hour','minute','second')
*/
function convertLiteralToTimeSpan(literal) {
....
}
function convertLiteralToTimeSpan(literal) {
var textObj = {
'second': '1',
'minute': '60',
'hour': '3600',
'day': '216000',
'month': '12960000',
'year': '777600000'
};
var literalArr = literal.split(' ');
var num = literalArr [0];
var txt = literalArr [1];
var factor = textObj[txt];
return parseInt(num) * parseInt(factor);
}
var test = convertLiteralToTimeSpan('1 year');
var test_month = convertLiteralToTimeSpan('1 month');
var test_day = convertLiteralToTimeSpan('1 day');
$('#result').html(test);
$('#result_month').html(test_month);
$('#result_day').html(test_day);
.result { font-weight:bold }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<span>1 year</span>: <span id="result" class="result"></span><br />
<span>1 month</span>: <span id="result_month" class="result"></span><br />
<span>1 day</span>: <span id="result_day" class="result"></span>
пожалуйста, поместите ваш код здесь свистеть года u сделал до сих пор –
У меня просто таблица html, показывающая данные с php. Я должен применить сортировку по столбцу, указанному выше. Единственный js, который я сделал в datatables: $ ('# actionData'). DataTable ({ paging: false, // Disable default pagination search: false, // Отключить поиск по умолчанию stateSave: true, // Save table состояние сортировки для перезагрузки информация: false // Скрыть данные таблицы }); –
Btw, мы не можем предоставить решение без вашего кода, здесь вы не можете прочитать ваш разум за то, что вы сделали. :) –