隐藏数据表中的记录

时间:2016-02-18 02:39:09

标签: javascript jquery ajax datatable datatables

我想要做的是隐藏数据表中的记录/数据,以便默认情况下显示“表格中没有可用数据”。但是,当用户使用搜索功能时,它将显示匹配的记录。如果搜索和我的列过滤器中没有数据,则不会显示任何数据。简而言之,我只是希望我的记录不会显示为默认值。记录只应在搜索时显示。

设置deferLoading:0首先不加载数据,但是当我从搜索栏中删除信息时,记录仍会显示。

我的剧本:

$(document).ready(function(){
    var dataTable = $('#example').dataTable({
        dom: 'T<"clear">lfrtip',
        "tableTools": {
            "sSwfPath": "../assets/swf/copy_csv_xls_pdf.swf",
            "sRowSelect": "multi",
            "aButtons": [
                "select_all",
                "select_none",
                {
                    "sExtends":    "collection",
                    "sButtonText": "Advance Tools",
                    "aButtons":    [ "csv", "xls", "pdf","print" ]
                }
            ]
        },
        bProcessing: true,
        bServerSide: true,
        bRegex:true,
        "oLanguage" : {"sZeroRecords": "", "sEmptyTable": ""},
        deferLoading: 0,
        sAjaxSource: "server_processing.php"
    });
});

1 个答案:

答案 0 :(得分:1)

您可以使用自定义过滤器隐藏行,然后在用户执行搜索/清除搜索框时重置/设置此过滤器。

function hideRowsFilter() {
  $.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
     return false
  })
  dataTable.fnDraw();
}  
function clearFilter() {
  $.fn.dataTableExt.afnFiltering.pop();
  dataTable.fnDraw();  
} 

初始化dataTable后,设置过滤器

hideRowsFilter();

根据用户输入重置/设置过滤器

$('.dataTables_filter input').on('keyup', function() {
   if (this.value != '' ) {
      clearFilter();
   } else {
      hideRowsFilter();
   }
})

演示 - &gt;的 http://jsfiddle.net/zusz9a0n/

上面的代码和代码使用的是1.9.x,有些东西告诉我你正在使用1.9.x - 但它也适用于1.10.x.