2017-06-03 49 views
-1

我有一個來自Ajax的Datatable,我想要在#datatableOne列中的列的'Status'列的值爲'Unknown'。我試過以下。使用特定列值對來自Ajax的數據表(包括分頁行)進行計數

這隻能算作在活動頁面

function tableOneRowCount(){ 
    var rows = $("#datatableOne td:nth-child():contains('Unknown')").length; 
    alert("Unknown rows :" + rows); 
} 

行,這也並不包括分頁行,除非你讓他們看到一次。所以除非我選擇第二頁,否則第二頁不會包含'未知'行。

需要幫助,因爲我沒有一個非常紮實的JavaScript經驗。

以下是我如何加載我的數據表。

var tableOne = $('#datatableOne').DataTable({ 
     ajax:{ 
      url: '@Url.Action("AssetsUnderContract_AjaxHandler", "SiteReport")', 
      type: 'GET', 
      data: { "SiteReportID": SiteReportID } 
     }, 
     "bProcessing": true, 
     "columns": [ 
      {"data": "report_asset_id"}, 
      {"data": "product_name"}, 
      {"data": "serial_number"}, 
      {"data": "description"}, 
      {"data": "site_location"}, 
      {"data": "asset_guarantee"}, 
      {"data": "asset_calibration_status"} 
     ], 
     "columnDefs": [ 
      { 
      "targets": 7, 
      "data": null, 
      "defaultContent": '<button class="btn btn-round btn-primary btn-xs" type="button">Load</button>' 
      } 
     ], 
     "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {  

      if(aData["asset_guarantee"] == true){ 
       $("td:eq(5)", nRow).text("").wrapInner('<span class="glyphicon glyphicon-check"></span>').css("text-align", "center") 
      }else { 
       $("td:eq(5)", nRow).text("").wrapInner('<span class="glyphicon glyphicon-unchecked"></span>').css("text-align", "center") 
      } 

      if(aData["asset_calibration_status"] == 0){ 
       $("td:eq(6)", nRow).text("Unknown").wrapInner('<span class="label label-default"></span>').css("text-align", "center") 
      }else if(aData["asset_calibration_status"] == 1){ 
       $("td:eq(6)", nRow).text("Completed").wrapInner('<span class="label label-success"></span>').css("text-align", "center") 
      }else if(aData["asset_calibration_status"] == 2){ 
       $("td:eq(6)", nRow).text("Not Found").wrapInner('<span class="label label-danger"></span>').css("text-align", "center") 
      }else if(aData["asset_calibration_status"] == 3){ 
       $("td:eq(6)", nRow).text("Pending").wrapInner('<span class="label label-danger"></span>').css("text-align", "center") 
      } 
      return nRow; 
     } 
    }); 

回答

-1

可以使用data()方法來檢索所有行從tableOne像這樣在加載數據後:

tableOne.data().length 

這會給你所有的JavaScript你行的計數。要僅在status === 'unknown'上進行過濾,您可以在data()上執行each()來對它們進行計數。

var unknownCount = 0; 
tableOne.data().each(function(row) { 
    if (row.status === 'unknown') { 
     unknownCount = unknownCount + 1; 
    } 
} 

我假設row是一個對象,但它可能不是,但希望這可以讓你在正確的軌道上。

相關問題