2016-08-19 25 views
1

このコードは次のとおりです。DataTableの乗算

$(document).ready(function() { 
 

 
    function getCodeNameSpecsSize(data, type, dataToSet) { 
 
     return data[3] + ", " + data[4] + ", " + data[5] + ", " + data[6]; 
 
    } 
 

 
    function getTotalPrice(data, type, dataToSet) { 
 
     return data[7] * data[9]; 
 
    } 
 
    
 
    var table = $('#incoming_material').dataTable({ 
 
     "aProcessing": true, 
 
     "aServerSide": true, 
 
     "scrollY": 350, 
 
     "scrollX": true, 
 
     "deferRender": true, 
 
     "ajax": "Scripts/server-response-im.php", 
 
     "aoColumns": [ 
 
       {"data": "1", "sClass": "align_center"}, 
 
       {"data": "2", "sClass": "align_center"}, 
 
       {"data": getCodeNameSpecsSize, "sClass": "align_center"}, 
 
       {"data": "7", "sClass": "align_center"}, 
 
       {"data": "8", "sClass": "align_center"}, 
 
       {"data": "9", "sClass": "align_center"}, 
 
       {"data": "10", "sClass": "align_center", 
 
       "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { 
 
        var $currencyCell = $(nTd); 
 
        var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
 
        $currencyCell.text(commaValue); 
 
       } 
 
       }, 
 
       {"data": getTotalPrice, "sClass": "align_center", 
 
       "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { 
 
        var $currencyCell = $(nTd); 
 
        var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
 
        $currencyCell.text(commaValue); 
 
       } 
 
       }, 
 
       {"data": "11", "sClass": "align_center"}, 
 
       { "mData": null , "sClass": "align_center", 
 
       "mRender" : function (data, type, full) { 
 
        return '<a href="redirect_preview_po.php?c='+data[2]+'" target=_blank>Preview</a>';} 
 
       } 
 
      ], 
 
     "aaSorting": [[0,'desc']], 
 
     dom: 'Bfrtip', 
 
     lengthMenu: [ 
 
      [ 10, 25, 50, -1 ], 
 
      [ '10 rows', '25 rows', '50 rows', 'Show all' ] 
 
     ], 
 
     buttons: [ 
 
      'pageLength', 
 
      'print', 
 
      'copyHtml5', 
 
      'excelHtml5', 
 
      'csvHtml5', 
 
      'pdfHtml5', 
 
      'colvis' 
 
     ], 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

私は仕事にgetCodeNameSpecsSize機能を作ったが、getTotalPrice機能が動作しません。テーブルには、qty * unit_priceの代わりにNaNの値が表示されます。

QTY = data[7]; 
Unit Price = data[9]; 

ありがとうございます。どんな助けでも大歓迎です。

答えて

1

データの種類[7]とデータ[9]を確認できます。文字列型の場合は、乗算が機能しないことがあります。

parseInt(data [7])* parseInt(data [9])を使用して、それが機能するかどうかを確認してください。

+0

QTYと単価は既に私のテーブルではBIGINTですが、コード戻り値parseInt(data [7])* parseInt(data [9])も試しました。動いていない。何か案が?ありがとう。 –

+1

サンプル入力データなしでデバッグが難しい。機能にブレークポイントを追加するか、コンソールにログを残して、何が起こっているかを確認してください。また、fnCreatedCell関数を一時的にコメントアウトし、問題を切り分けてみてください。 –

+0

私のコードは現在動作しています。私の悪い。私がすべてを再確認した後、unit_price = data [10]となる。データではない[9]。つまり、結果は利用できないか、NaNです。ご支援ありがとうございます。 –

1

あなたはdata:に関数を渡そうとしていますが、これは期待したものではありません。そのオプションは、データ内のフィールドを指す必要があります。関数によって計算されたデータをその列に表示したい場合は、それはrender:です。

メモとして、1.10より前の表記を1.10より後の表記と混合しています。たとえば、renderを使用する場合は、mRenderを使用しています。 hungarian notationのすべてを新しい表記法で置き換えることができます。

上記のメモに関係なく、data[7]data[8]getTotalPrice関数に渡した結果のデータをレンダリングする列を取得する方法は次のとおりです。

{"data": null, "sClass": "align_center", 
    "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) { 
    var $currencyCell = $(nTd); 
    var commaValue = $currencyCell.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); 
    $currencyCell.text(commaValue); 
    }, 
    "render": function (data, type, row, meta) { 
     return getTotalPrice(row); 
    } 
} 

data:はnullに置き換えられました。これは、データが元のソースにはなく、代わりに他のフィールドから計算されるためです。 もう1つの主な変更点は、renderオプションの追加です。

fnCreatedCellさんは何をやっているのでしょうかとは私は確信していませんが、これがうまくいかない場合は、renderを妨害しているかもしれません。

+0

私のコードは今働いています。私の悪い。私がすべてを再確認した後、unit_price = data [10]となる。データではない[9]。つまり、結果は利用できないか、NaNです。ご支援ありがとうございます。 –

+0

ちなみに、fncreatedCell関数は、行を通貨形式にして(行にコマを追加する)、私はその笑を得る場所を作ります。 –

0

私のコードは現在動作しています。私の悪い。私がすべてを再確認した後、unit_price = data [10]となる。データではない[9]。つまり、結果は利用できないか、NaNです。サポートしてくれてありがとう、みんな。