RameshManoharan Ответов: 0

Нокаут js grid ajax вызов не работает


сетка имеет цену, столбец кол-во. мне нужно рассчитать общий ie. цена * кол-во. Его рабочий новый ряд только. но я извлекаю данные из веб-сервиса и загружаю их в сетку. теперь я выбираю значение кол-во, Но расчет не работает. его работа заключается в добавлении новой строки. Пожалуйста помочь..

Что я уже пробовал:

<script>

        var quotationViewModel = function (quotations) {
            var self = this;

            self.quotations = ko.observableArray(ko.utils.arrayMap(quotations, function (item) {
                return new Item(item);
            }));

            self.addquotation = function () {
                self.quotations.push(new Item());

                UIValidation();
            };

            self.removequotation = function (quotation) {
                self.quotations.remove(quotation);
            };
            self.savequotation = function () {
                return ko.utils.stringifyJson(self.quotations);
            }
            self.grand_total = ko.computed(function () {
                var total = 0;
                for (var p = 0; p < self.quotations().length; ++p) {
                    total += self.quotations()[p].total();
                }
                return total.toFixed(2);
            });

            self.Tax_Total = ko.computed(function () {
                var tax = 0;
                for (var p = 0; p < self.quotations().length; ++p) {
                    tax += self.quotations()[p].tax_calc();
                }
                return tax.toFixed(2);
            });

            self.grandTax = ko.computed(function () {
                var tax = 0, sum = 0, totalsum = 0;
                for (var p = 0; p < self.quotations().length; ++p) {
                    tax += self.quotations()[p].tax_calc();
                    sum += self.quotations()[p].total();
                    totalsum = tax + sum;
                }
                $('#grandTax').val(totalsum.toFixed(2));
                $('#totalAmt').val(totalsum.toFixed(2));
                $('#TotalVat_Amt').val(tax.toFixed(2));
                return totalsum.toFixed(2);
            });

            function Item(item) {
                var self = this;
                self.P055_ID = ko.observable('');
                self.itemCode = ko.observable('');
                self.itemDesc = ko.observable('');
                self.packing = ko.observable();
                self.VatCode = ko.observable();
                self.VatDesc = ko.observable();
                self.taxID = ko.observable();
                self.tax_perc = ko.observable(0);
                self.quantity = ko.observable(0);
                self.rate = ko.observable(0);
                self.remarks = ko.observable();

                for (var k in item)
                    self[k] = ko.observable(item[k]);

                self.total = ko.dependentObservable(function () {
                    return ((self.quantity() * self.rate()));

                }).bind(self);

                self.tax_calc = ko.dependentObservable(function () {
                    return ((self.tax_perc() * self.total()) / 100);

                }).bind(self);
                self.Tax_Total = ko.observable();

            }
        };

        var quotationModel = new quotationViewModel(@Html.Raw(@Model.gridQuotationDetails));
        ko.applyBindings(quotationModel, document.getElementById('divQuotationDetails'));

    </script>

0 Ответов