2017-08-10 4 views
0

DataTables.net wikiを読んで、以下の構文の列1に合計を追加する方法を見つけたので、広範なJQueryエクスペリエンスを持つ人が簡単に対応できると確信しています私のための列6 - 12の合計を表示します。DataTables.Net 7列の合計を返す

これは、列4の合計を追加するための基本設定です。追加列の合計を追加するために変更されるのは何ですか?

https://datatables.net/examples/advanced_init/footer_callback.html

$(document).ready(function() { 
    $('#example').DataTable({ 
     "footerCallback": function (row, data, start, end, display) { 
      var api = this.api(), data; 

      // Remove the formatting to get integer data for summation 
      var intVal = function (i) { 
       return typeof i === 'string' ? 
        i.replace(/[\$,]/g, '')*1 : 
        typeof i === 'number' ? 
         i : 0; 
      }; 

      // Total over all pages 
      total = api 
       .column(4) 
       .data() 
       .reduce(function (a, b) { 
        return intVal(a) + intVal(b); 
       }, 0); 

      // Total over this page 
      pageTotal = api 
       .column(4, { page: 'current'}) 
       .data() 
       .reduce(function (a, b) { 
        return intVal(a) + intVal(b); 
       }, 0); 

      // Update footer 
      $(api.column(4).footer()).html(
       '$'+pageTotal +' ($'+ total +' total)' 
      ); 
     } 
    }); 
}); 

答えて

1

いくつかの簡単なリファクタリングは、任意の列番号の呼び出し可能な機能が可能になります。

  1. colNumを合計する列を表す1つの パラメータで関数にcolumn 4のために働くために使用されるものを包み:あなたは、私がいることがわかります。
  2. は、私はそれが 定義の後に新しく作成された関数を呼び出すに進んcolNum
  3. に新しい関数内4にすべての出現箇所を置き換えます。

$(document).ready(function() { 
 
    $('#example').DataTable({ 
 
    "footerCallback": function(row, data, start, end, display) { 
 
     var api = this.api(), 
 
     data; 
 

 
     // Remove the formatting to get integer data for summation 
 
     var intVal = function(i) { 
 
     return typeof i === 'string' ? 
 
      i.replace(/[\$,]/g, '') * 1 : 
 
      typeof i === 'number' ? 
 
      i : 0; 
 
     }; 
 
     var totalColumn = function(colNum) { 
 
     // Total over all pages 
 
     total = api 
 
      .column(colNum) 
 
      .data() 
 
      .reduce(function(a, b) { 
 
      return intVal(a) + intVal(b); 
 
      }, 0); 
 

 
     // Total over this page 
 
     pageTotal = api 
 
      .column(colNum, { 
 
      page: 'current' 
 
      }) 
 
      .data() 
 
      .reduce(function(a, b) { 
 
      return intVal(a) + intVal(b); 
 
      }, 0); 
 

 
     // Update footer 
 
     $(api.column(colNum).footer()).html(
 
      '$' + pageTotal + ' ($' + total + ' total)' 
 
     ); 
 
     } 
 
     totalColumn(6); 
 
     totalColumn(7); 
 
     //...snip... 
 
    } 
 
    }); 
 
});

+0

この完全な構文や単なる一例ですか?私はbcコードのスニペットがエラー – BellHopByDayAmetuerCoderByNigh

+0

をスローするようにお願いします。スニペットはdatatables.netが何であるか分かりません。また、HTMLやその他のソースを提供していません。スニペットはこの環境では実行されません。それは単なる例です。 – Steve

+0

私の生産環境でこれを実行すると、次のエラーが発生します。Uncaught TypeError:未定義のプロパティ 'nTf'を読むことができません t。 (datatables.min.js:199) at t.iterator(datatables.min.js:175) at t。 (datatables.min.js:199) at t。 (ar-detail-summary:483)(datatables.min.js:179) at t.footer(datatables.min.js:178) at totalColumn(ar-detail-summary:483) at n.fn.init.footerCallback要約:491) at datatables.min.js:150 Function.map(datatables.min.js:14) at(datatables.min.js:150) – BellHopByDayAmetuerCoderByNigh

関連する問題