2017-06-03 13 views
-1

AjaxソースのDatatableを持っています。#datatableOneの行をカウントしたいところです。 'Status'列の値は 'Unknown'です。私は以下を試した。特定の列の値を持つAjaxソースのデータテーブル(ページングされた行を含む)の行をカウントする

これが唯一のアクティブなページ

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

内の行をカウントし、一度それらを見えるようにしない限り、これもないページ番号付きの行を含んでいます。 2ページ目を選択しない限り、2ページ目の「不明な」行は含まれません。

私はjavascriptで非常にしっかりした経験をしていません。

以下は、どのように私のデータテーブルをロードするのかです。

あなたがデータをロードした後、あなたがそうのような tableOneからすべての行を取得するには data()メソッドを使用することができます
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

tableOne.data().length 

これはあなたのJavaScriptで、あなたのすべての行のカウントを与えます。 status === 'unknown'でフィルタリングするには、data()each()を入力してカウントしてください。私はrowと仮定してい

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

が対象ですが、それはないかもしれませんが、うまくいけば、これは正しい軌道に乗ってあなたを取得します。

関連する問題