Нумерация страниц данных в меню выбора - PullRequest
1 голос
/ 24 января 2012

У меня есть меню выбора с двумя опциями «Все» и «тест» ..... когда я выбираю «Все», отображается таблица данных с 15 столбцами, а при выборе «тест» появляется другая таблица данных с 5 столбцами. выбран ....

Если количество элементов меньше или равно 5, нумерация страниц должна быть отключена ...

Это то, что я сделал до сих пор,

создал 2 таблицы данных, как упомянуто,

function All(){

$('#All').dataTable({
    "iDisplayLength": 5,
    "sPaginationType": "four_button",
    "bJQueryUI": true,
    "bRetrieve": true,
    "bAutoWidth": false,
    "fnDrawCallback": function() {
            if (Math.ceil((this.fnSettings().fnRecordsDisplay()) / this.fnSettings()._iDisplayLength) > 1)  {
                    $('.dataTables_paginate').css("display", "block");
            } else {
                    $('.dataTables_paginate').hide();
            }
        }
});
}

function Test(){

$('#Test').dataTable({
    "iDisplayLength": 5,
    "sPaginationType": "four_button",
    "bJQueryUI": true,
    "bRetrieve": true,
    "bAutoWidth": false,
    "fnDrawCallback": function() {
            if (Math.ceil((this.fnSettings().fnRecordsDisplay()) / this.fnSettings()._iDisplayLength) > 1)  {
                    $('.dataTables_paginate').css("display", "block");
            } else {
                    $('.dataTables_paginate').hide();
            }
        }
});
}

$(document).ready(function(){

$('#List').val('All');
All();
$('#test').hide();

$("#List").change(function(){

if(this.value == 'All'){

        All();
        $('#All').show();
        $('#Test_wrapper').hide();
}
else if (this.value == 'Test'){
        Test();
        $('#Test').show();
        $('#All_wrapper').hide();
}
});
});

Как видите, я проверяю пагинацию в функции "fnDrawCallBack" ...... Загрузки страницы находят при вызове изначально ..... но когда я выбираю Все после выбора теста, нумерация страниц исчезает, понятно ......

есть ли обходной путь для этого? Любая помощь приветствуется ....

Спасибо

1 Ответ

0 голосов
/ 25 января 2012

Не бери в голову, нашел решение для реализации этого ......

В функции documentmennt.ready поместите что-то подобное в условие if для каждой таблицы ........

$("#productsList").change(function(){

        if(this.value == 'All'){
            All();
            all.fnPageChange( 'first' );
            $('#All').show();
            $('#Test').hide();
            if (Math.ceil((all.fnSettings().fnRecordsDisplay()) / all.fnSettings()._iDisplayLength) > 1)  {
                    $('.dataTables_paginate').css("display", "block");
                } else {
                        $('.dataTables_paginate').hide();
                }

Кроме того, вы делаете аналогичный цикл if, когда в выпадающем списке выбрано «test» ...

Другой способ, которым я пытался это сделать, (нашел вышеупомянутое решение более осуществимым, вот и все) ...

Попробуйте определить, активен ли дочерний узел, используя jQuery ...., поместив это в ваше условие if функции documenty.ready при изменении значения,

if($('#Test_wrapper #paginate_next').hasClass('paginate_enabled_next') || $('#Test_wrapper #paginate_previous').hasClass('paginate_enabled_next')){
                $('#Test_wrapper .dataTables_paginate').css("display", "block");
            } else {
                $('#Test_wrapper .dataTables_paginate').hide();
            }

Примечание: вышеупомянутый метод только скрывает вашу нумерацию страниц ...

Я пытался уничтожить мою старую таблицу и воссоздать ее, но это показывало ошибку javascript, у меня не было времени, чтобы разобраться в этом ... сделаю, когда у меня будет время:)

Пожалуйста, дайте мне знать, если есть лучшее решение для этого ......

Приветствия и спасибо, что нашли время, чтобы прочитать это:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...