2012-01-24 19 views
1

我有一個選擇菜單,有兩個選項「全部」和「測試」.....當我選擇「全部」時,顯示一列15列的數據表,當選擇「測試」時,有5列數據表的另一個選擇....jquery datatable在選擇菜單上的分頁

當有小於或等於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」函數中的分頁...... 頁面在最初調用時加載查找.....但在選擇測試後選擇全部時,分頁消失,可以理解......

是否有任何解決此問題的方法?任何幫助表示讚賞....

感謝

回答

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

而且,你做了類似的,如果在「測試」從下拉菜單中選擇循環...

,我試圖上來的另一種方式(它發現上面的解決方案更可行,就是這樣)...

嘗試確定是否使用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錯誤,沒有時間研究它......當我有時間時應該做:)

請讓我知道,如果有更好的解決方案......

歡呼聲和感謝您抽出時間閱讀此:) :)