0
votes

I have a table with 2 columns - one where user can input a value to return and other column is a checkbox. If a user enters a value in the item row, I make the checkbox checked. If value is greater than 0 then only the checkbox is selected. My issue is with the below code, if I input a value on the 3 rd row, that checkbox is selected but alongside even the first row's checkbox is selected. I think the issue is in the stmt: tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "X"); Because I am giving "0" the first row is also getting the value. How to I point to the correct result number. Controller.js

qtyChange: function(oEvent) {

            var a = oEvent.getSource();
            var input = a.getValue()
            var row = oEvent.getSource().getParent().getParent();
            var index = row.getIndex();

            var oTable = vc.getView().byId("takeStockHistoryDetailTable");
            var selectedRowPath = oTable.getContextByIndex(index).getPath();
            var tableModel = vc.getView().getModel(TAKE_STOCK_ORDER_DETAIL);
            var selectedPart = tableModel.getObject(selectedRowPath);
            var QtyOnHand = selectedPart.QtyOnHand;
            var UnitP = selectedPart.UnitPrice;

            var f = parseInt(input);
            var g = parseInt(QtyOnHand);
            var h = parseFloat(UnitP);

            if (f > g) {

                sap.m.MessageToast.show("Return quantity is more than available quantity");
                a.setValue("");

            } else if (f === 0 || input === "") {
                selectedPart.ReturnItemFlag = 'Y';
                tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "Y");

            } else {

                selectedPart.ReturnItemFlag = 'X';
                selectedPart.QtyToReturn = input;

                var sub = input * h;
                // debugger;
                var sub1 = sub.toString();
                selectedPart.Subtotal = sub1;

                tableModel.setProperty("/ItemSet/results/0/ReturnItemFlag", "X");
                tableModel.setProperty("/ItemSet/results/0/Subtotal", sub1);
            }

        },
1

1 Answers

0
votes

This is possibly a very complicated way of working with table items.

Here is how you should work with bindingContexts.

on listItemPress Event of the table(list)

qtyChange: function(oEvent){
    
    var oColumnListItem = oEvent.getSource().getParent();
    var sPath = oColumnListItem.getBindingContextPath("yourModelName");

OR 
    var sPath = oColumnListItem.getBindingContext("yourModelName").getPath();

    var sReturnItemFlagPath = sPath + "/ReturnItemFlag";

    tableModel.setProperty(sReturnItemFlagPath,"newValue");

}

Let me know if this helps!