Как сумма для каждого столбца для выбранных строк? - PullRequest
0 голосов
/ 22 марта 2019

Я хочу составить таблицу, чтобы можно было сравнивать цены.Пояснения: В моей таблице:

  • Проект
  • Продукт
  • Производитель
  • Название
  • Количество
  • Цена покупки единицы (сумма)
  • Общая цена покупки (сумма)
  • Умножение (среднее значение)
  • Цена продажи единицы (сумма)
  • Всего продажцена (сумма)
  • Прибыль (сумма)

В моем случае идеально было бы выбрать линии, которые я хочу сохранить, чтобы увидеть общую цену моего выбора.Таким образом, я вижу стоимость различных опций.

у кого-нибудь возникнет идея или уже возникла эта проблема?

Спасибо за помощь:)

РЕДАКТИРОВАТЬ сумма для каждого столбца работает нормально, но когда я не могу найти только сумму для каждого столбца, когда выбираю их.Извините, но мне не нравится js: - /

// 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;
};

$(document).ready(function() {
    var table = $('#example').DataTable( {
        columnDefs: [{
          targets: [4,5,6,8,9,10],
          render: $.fn.dataTable.render.number(',', '.', 2)
        }],
        responsive: true,
        paging:false,
        "footerCallback": function ( row, data, start, end, display ) {
            var api = this.api(), data;
            var sumColumns = [4,5,6,8,9,10];

            sumColumns.forEach(function(colIndex){
            // Total over all pages
                var total = api
                    .rows({ selected: true })
                    .column(colIndex)
                    .data()
                    .reduce( function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0 );

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

                // Update footer
                $( api.columns(colIndex).footer() ).html(
                    total
                );
            }) 
        },
    });
}); 
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" rel="stylesheet"/>
<div id="page">
    <h1>Contacts</h1>
    <table id="example" class="display nowrap table1" cellspacing="0" width="100%">
        <thead>
        <tr>
            <th>projectid</th>
            <th>productid</th>
            <th>manufacturerid</th>
            <th>title</th>
            <th>quantity</th>
            <th>PAU a</th>
            <th>PAT a</th>
            <th>Coef a</th>
            <th>PVU a</th>
            <th>PVT a</th>
            <th>Profit a</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>1</td>
            <td>5</td>
            <td>5</td>
            <td>Title 1</td>
            <td>10</td>
            <td>130</td>
            <td>1300</td>
            <td>2</td>
            <td>260</td>
            <td>2600</td>
            <td>1300</td>
        </tr>
        <tr>
            <td>2</td>
            <td>3</td>
            <td>6</td>
            <td>Title 2</td>
            <td>10</td>
            <td>100</td>
            <td>1000</td>
            <td>2</td>
            <td>200</td>
            <td>2000</td>
            <td>1000</td>
        </tr>
        <tr>
            <td>3</td>
            <td>2</td>
            <td>5</td>
            <td>Title 3</td>
            <td>10</td>
            <td>50</td>
            <td>500</td>
            <td>2</td>
            <td>100</td>
            <td>1000</td>
            <td>500</td>
        </tr>
        </tbody>
        <tfoot>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th>PAU a</th>
            <th>PAT a</th>
            <th></th>
            <th>PVU a</th>
            <th>PVT a</th>
            <th>Profit a</th>
        </tr>
        </tfoot>
    </table>
</div>

1 Ответ

0 голосов
/ 22 марта 2019

Я написал функцию для вычисления ваших столбцов и среднего значения для 7-го столбца, это отдельно от вашего кода, вы можете использовать его где угодно.

   jQuery(document).ready(function($) {

        var sumColumns = [4,5,6,8,9,10];
        $.each(sumColumns, function(index, val) {
            var total = 0;
         jQuery('tbody tr td:nth-child('+val+')').each(function(index, el) {
                total += parseInt($(this).html());
            });
            jQuery('tfoot tr th:nth-child('+val+')').each(function(index, el) {
                $(this).html(total);
            });
        });
        var total = 0;
        jQuery('tbody tr td:nth-child(7)').each(function(index, el) {
                total += parseInt($(this).html());
            });
            jQuery('tfoot tr th:nth-child(7)').each(function(index, el) {
                $(this).html(total/jQuery('tbody tr td:nth-child(7)').length);
            });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...