Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227

DataTable сортировка даты

10.12.2016, 19:09. Показов 4572. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел пример, но немного мне не понятно как писать ее, чтобы сортировало даты корректно и куда поставить код. Подскажите пожалуйста

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function sorter()
{
    $(document).ready(function(){
        $('#table_id').DataTable({
            searching:false,
            "aoColumnDefs":[
        {"aTargets":[0],'bSortable':false},
        {"aTargets":[8],"bSortable":false},
        {"aTargets":[1], "sType": "ruDate"}
        ],
        language: {
                "search": "Поиск:",
                "lengthMenu": "Показать _MENU_ записей",
                "info": "Записей с _START_ до _END_ из _TOTAL_ записей",
                "infoEmpty": "Записи с 0 до 0 из 0 записей",
                "infoFiltered": "(отфильтровано из _MAX_ записей)",
                "zeroRecords": "Записи отсутствуют",
                "emptyTable": "В таблице отсутствуют данные",
                "paginate": {"first":"Первая",
                "previous":"Предыдущая",
                "next": "Следующая",
                "last": "Последняя"
                }
            }
        });
    });
}
    jQuery.extend(jQuery.fn.dataTableExt.oSort, 
    {
        "ruDate-ask": function(a,b){
            var ruDatea=$.trim(a).aplit('.');
            var ruDateb=$.trim(b).split('.');
 
            if (ruDatea[2]*1<ruDateb[2]*1) return 1;
            if (ruDatea[2]*1>ruDateb[2]*1) return -1;
            if (ruDatea[2]*1 == ruDateb[2]*1) 
            {
                if (ruDatea[1]*1<ruDateb[1]*1) return 1;
                if (ruDatea[1]*1>ruDateb[1]*1) return -1;
                if (ruDatea[1]*1 == ruDateb[1]*1) 
                {
                    if (ruDatea[0]*1<ruDateb[0]*1) return 1;
                    if (ruDatea[0]*1>ruDateb[0]*1) return -1;
                }
                else return 0;
            }
        },
        "ruDate-desk": function(a,b) {
            var ruDatea=$.trim(a).aplit('.');
            var ruDateb=$.trim(b).split('.');
 
            if (ruDatea[2]*1<ruDateb[2]*1) return 1;
            if (ruDatea[2]*1>ruDateb[2]*1) return -1;
            if (ruDatea[2]*1 == ruDateb[2]*1) 
            {
                if (ruDatea[1]*1<ruDateb[1]*1) return 1;
                if (ruDatea[1]*1>ruDateb[1]*1) return -1;
                if (ruDatea[1]*1 == ruDateb[1]*1) 
                {
                    if (ruDatea[0]*1<ruDateb[0]*1) return 1;
                    if (ruDatea[0]*1>ruDateb[0]*1) return -1;
                }
                else return 0;
            }
        }
    });
 Комментарий модератора 
Если Вы так и продолжите размещать темы, как Бог на душу положит, увидите перед собой карту!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2016, 19:09
Ответы с готовыми решениями:

Jquery.datatable сортировка по дате
Добрый день Есть на странице &lt;table id=&quot;myTable&quot;&gt;&lt;/table&gt; к которой привязываю этот фреймворк function doMakeTable() { ...

DataTable сортировка по дате, используя RowFilter (меньше или больше определенной даты)
Добрый день! Есть DataTable1 с текстовыми колонками: Дата и Датасорт. Колонка &quot;Дата&quot; выглядит так: 21.07.2016 ...

Изменение формата даты в DataTable
Есть бд с двумя полями -имя пользователя(string) и дата регистрации(date). Оба поля вытягиваются с помощью SqlCommand и все значения...

6
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
12.12.2016, 10:31
а что тут не понятного? не сортирует? сначала сравниваются годы, если они равны, то месяцы, если равны то дни, разве что код я бы немного по другому разместил, сначала extend, потом инициализация таблицы DataTable, зачем ты все это заключил в функцию sorter() я не понимаю, достаточно проинициализировать все один раз и плагин сам будет сортировать
0
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
13.12.2016, 09:57  [ТС]
Уф, Просто не хочется очень много разводить файлов js, делаю в виде функции
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
13.12.2016, 10:40
т.е. ты хочешь чтобы сортировка работала без самой библиотеки?
0
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
13.12.2016, 12:13  [ТС]
Уф, а так таблица сортирует. Просто у меня если взять случайные 3 даты 17.10.16, 15.09.15, 20.12.14
То будет сортировать примерно так:
20.12.14
17.10.16
15.09.15

Добавлено через 2 минуты
Уф, А как лучше, можно с самой библиотекой, но чтобы было корректное отображение. В файле чтобы также не было много кода у меня в принципе она работает нормально с этой функцией. Но вот даты почему то сортировать никак нормально не получается

Добавлено через 42 минуты
Уф, У меня никак не выходит нормально сортировать пробовал такой код
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$.extend($.fn.dataTableExt.oSort, {
        "date-eu-pre": function(dateTime){
            if (!dateTime) {
            return 0;
        }
        var date_time =dateTime.spilt('');
        var date;
        if (date_time[0]) {
            date=date_time[0];
        }
        var eu_date=date.spilt(/[\.\-\/]/);
        var year;
        if (eu_date[2]) {
            year=eu_date[2];
        }
        else{year=0;}
        var month = eu_date[1];
        if (month.length==1) {
            month=0+month;
        }
        var day = eu_date[0];
        if (day.length==1) {
            day=0+day;
        }
        return(year+month+day)*1;
        },
        "date-eu-ask": function(a,b){
            return((a<b)?-1:((a>b)?1:0));
        },
        "date-eu-desk": function(a,b){
            return ((a<b)?1:((a>b)?-1:0))
        }
    });
    $(document).ready(function(){
        $('#table_id').DataTable({
            "aoColumnDefs":[
        {"aTargets":[0],'bSortable':false},
        {"aTargets":[8],"bSortable":false},
        {type: 'date-eu', target: 1}
        ],
        searching: false,
        language: {
                "search": "Поиск:",
                "lengthMenu": "Показать _MENU_ записей",
                "info": "_TOTAL_ записей",
                "infoEmpty": "Записи 0 записей",
                "infoFiltered": "(отфильтровано из _MAX_ записей)",
                "zeroRecords": "Записи отсутствуют",
                "emptyTable": "В таблице отсутствуют данные",
                "paginate": 
                {"first":"Первая",
                "previous":"Предыдущая",
                "next": "Следующая",
                "last": "Последняя"
                }
            }
        });
    });
Все равно не работает корректно

Добавлено через 38 минут
Использовал также плагин moment.js, как прописано по документации, но ничего опять не выходит, выходит ошибка
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$(document).ready(function(){
        $.fn.dataTable.moment( 'HH:mm MMM D, YY' );
        
        $('#table_id').DataTable({
            "aoColumnDefs":[
        {"aTargets":[0],'bSortable':false},
        {"aTargets":[8],"bSortable":false},
        {type: 'date-eu', target: 1}
        ],
        searching: false,
        language: {
                "search": "Поиск:",
                "lengthMenu": "Показать _MENU_ записей",
                "info": "_TOTAL_ записей",
                "infoEmpty": "Записи 0 записей",
                "infoFiltered": "(отфильтровано из _MAX_ записей)",
                "zeroRecords": "Записи отсутствуют",
                "emptyTable": "В таблице отсутствуют данные",
                "paginate": 
                {"first":"Первая",
                "previous":"Предыдущая",
                "next": "Следующая",
                "last": "Последняя"
                }
            }
        });
    });
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
13.12.2016, 12:22
Лучший ответ Сообщение было отмечено Rusline18 как решение

Решение

вот держи https://jsfiddle.net/4bzy5hdf/ у тебя в сортировке ошибки
JavaScript
1
var ruDatea=$.trim(a).aplit('.'); //aplit ?? :)
и обе функции возвращают один и тот же результат, а должно быть разный
1
0 / 0 / 5
Регистрация: 24.01.2016
Сообщений: 227
13.12.2016, 14:01  [ТС]
Сейчас тогда попробую, если что отпишу

Добавлено через 38 минут
Уф, Да все работает

Добавлено через 42 минуты
Уф, Как понимаю данный сервис помогает в разработке?

Добавлено через 11 минут
Уф, И как я понял она только работает в том случае когда дата дд.мм.гг. А если поменяешь формат даты на дд.мм, то уже сортировка не работает. Там примерно что нужно поменять в коде, если не секрет? Просто я буду сейчас устанавливать фильтрацию по году. В принципе формат гг не нужно будет мне

Добавлено через 2 минуты
Все я понял просто пунктом [2] просто убираем и все.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2016, 14:01
Помогаю со студенческими работами здесь

Сохранение DataTable и ошибка преобразования даты или времени из символьной строки
Здравствуйте. Пытаюсь использовать такой код, для переноса моего DataTable в базу данных sql server. private void button1_Click(object...

Сортировка в DataTable
Здравствуйте! Помогите пожалуйста. Мой руководитель дал задание: в одной колонке есть три строки: в первой строке &quot;а10в&quot;, во...

Сортировка datatable
извиняюсь, не columnName, а значение ячейки columnName. то есть сортировка по значению ячейки

Сортировка данных в datatable
Для сортировки данных в DataTable пытался применить вот такую функцию Dim tablecopy As New DataTable tablecopy = _table.Copy() ...

Рандомная сортировка DataTable
Подскажите пожалуйста, как можно рандомно отсортировать DataTable (по ключу естественно)??? Вариант типаSELECT * FROM table ORDER BY...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru