2012-01-24 2 views
1

У меня есть меню выбора с двумя опциями «Все» и «Тест» ..... когда я выбираю «Все», отображается число с 15 столбцами и когда выбрано «тест» , другой DataTable с 5 столбцов выбран ....разбиение на страницы jquery datatable на меню выбора

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

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

создал 2 DataTables как уже упоминалось,

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» ... Страница загружает поиск при вызове изначально ..... но когда я выбираю All после выбора теста, разбиение на страницы исчезает, понятно ......

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

Благодаря

ответ

0

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

В documennt.ready функции, что-то вроде этого внутри, если условия для каждой таблицы ........

$("#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(); 
       } 

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

другой способ, который я пытался делаю g it (найденное выше решение более выполнимо, вот и все) ...

Попробуйте определить, активен ли дочерний узел с помощью 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(); 
      } 

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

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

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

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

Смежные вопросы